반응형
저는 PDO를 처음 사용하고 테이블에 데이터를 삽입하려고합니다.
이것은 내가 가진 테이블입니다.
CREATE TABLE `Message` (
`ID` INT( 8 ) NOT NULL AUTO_INCREMENT ,
`DateTime` DATETIME NOT NULL ,
`SmsSid` VARCHAR( 34 ) NOT NULL ,
`AccountSid` VARCHAR( 34 ) NOT NULL ,
`From` VARCHAR( 12 ) NOT NULL ,
`To` VARCHAR( 12 ) NOT NULL ,
`Body` VARCHAR( 160 ) NOT NULL ,
`FromCity` VARCHAR( 50 ) NULL ,
`FromState` VARCHAR( 50 ) NULL ,
`FromZip` VARCHAR( 50 ) NULL ,
`FromCountry` VARCHAR( 50 ) NULL ,
`ToCity` VARCHAR( 50 ) NULL ,
`ToState` VARCHAR( 50 ) NULL ,
`ToZip` VARCHAR( 50 ) NULL ,
`ToCountry` VARCHAR( 50 ) NULL ,
`ConversationNumber` INT( 4 ) NOT NULL ,
PRIMARY KEY ( `ID` )
) ENGINE = MYISAM
이것은 테이블에 삽입하려는 PHP 코드입니다. 이 삽입 문을 수행하는 올바른 방법은 무엇입니까? 준비 () 쿼리 () exec ()?
이 유사한 코드를 사용하여 덜 복잡한 테이블에 삽입 할 수 있지만 위의 코드는 사용할 수 없습니다. 문제, 구문, 열 유형, 자동 증분, 날짜 시간의 원인이 정확히 무엇인지 잘 모르겠습니다. 이 테이블에 삽입 쿼리에서 바로 처리하지 않는 것이 있습니까? 또한 디버그에 필요한 적절한 오류 메시지를보기 위해 예외 / 오류 처리를 올바르게 처리하고 있습니까?
<?php
try
{
$connectionString = new PDO("mysql:host=xxxx;dbname=xxxx;","xxxx","xxxx");
}
catch(PDOException $e)
{
echo 'Connection failed'.$e->getMessage();
}
$DateTime = "NOW()";
$SmsSid = "abcdef";
$AccountSid = "abcdef";
$FromWho = "abcdef";
$To = "abcdef";
$Body = "abcdef";
$FromCity = "abcdef";
$FromState = "abcdef";
$FromZip = "abcdef";
$FromCountry = "abcdef";
$ToCity = "abcdef";
$ToState = "abcdef";
$ToZip = "abcdef";
$ToCountry = "abcdef";
$ConversationNumber = "abcdef";
try
{
$executeQuery = $connectionString->prepare("INSERT INTO Message (SmsSid,AccountSid,`From`,To,Body,FromCity,FromState,FromZip,FromCountry,ToCity,ToState,ToZip,ToCountry,ConversationNumber) VALUES (:SmsSid,:AccountSid,:FromWho,:To,:Body,:FromCity,:FromState,:FromZip,:FromCountry,:ToCity,:ToState,:ToZip,:ToCountry,:ConversationNumber)");
$executeQuery->execute(array(':SmsSid'=>$SmsSid,':AccountSid'=>$AccountSid,':FromWho'=>$FromWho,':To'=>$To,':Body'=>$Body,':FromCity'=>$FromCity,':FromState'=>$FromState,':FromZip'=>$FromZip,':FromCountry'=>$FromCountry,':ToCity'=>$ToCity,':ToState'=>$ToState,':ToZip'=>$ToZip,':ToCountry'=>$ToCountry,':ConversationNumber'=>$ConversationNumber));
}
catch(PDOException $e)
{
echo 'Query failed'.$e->getMessage();
}
$connectionString = null;
?>
해결 방법
From
은 MySQL의 예약어입니다. 열 이름으로 사용하는 경우 다음과 같이 백틱으로 둘러싸 야합니다.
`From`
기본적으로 PDO는 예외를 발생시키지 않습니다. 오류시 예외를 발생 시키려면 다음을 호출하십시오.
$pdoObject->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
참조 페이지 https://stackoverflow.com/questions/15058129
반응형
'MySql' 카테고리의 다른 글
MySQL Visual Studio 2012를 설치 한 후 참조로 Mysql.Data를 추가 할 수 없습니다. (0) | 2021.01.11 |
---|---|
MySQL 기존 열의 값에 문자 추가 (0) | 2021.01.11 |
MySQL CodeIgniter에서 데이터베이스 테이블 표시 (0) | 2021.01.11 |
MySQL python MySQLDB 쿼리 시간 초과 (0) | 2021.01.11 |
MySQL 데이터 프레임에서 RMySQL에 삽입 (0) | 2021.01.11 |
댓글