[SQL] SQLSTATE [42000] : 구문 오류 또는 액세스 위반 : 당신은 당신의 SQL 구문에 오류가 1064 - PHP - PDO [중복]
SQLSQLSTATE [42000] : 구문 오류 또는 액세스 위반 : 당신은 당신의 SQL 구문에 오류가 1064 - PHP - PDO [중복]
나는 모든 통해 다른 StackOverflow의를 보았다 (구글) 같은 문제로 게시물을하지만 아무도 내 문제를 해결하기 위해 같았다했습니다.
나는 PDO와 PHP를 사용하고 있습니다.
내 코드 :
$vals = array(
':from' => $email,
':to' => $recipient,
':name' => $name,
':subject' => $subject,
':message' = >$message
);
print_r($vals);
try {
$pdo = new PDOConfig();
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql = "SELECT * FROM messages WHERE `message` LIKE :message";
$q = $pdo->prepare($sql);
$q->execute(array(':message' => $vals[':message']));
$resp = $q->fetchAll();
foreach ($resp as $row) {
throw new Exception('Please do not post the same message twice!');
}
$sql = "INSERT INTO messages (from, to, name, subject, message) VALUES (:from, :to, :name, :subject, :message)";
$q = $pdo->prepare($sql);
$q->execute($vals);
}
catch(PDOException $e) {
echo $e->getMessage();
}
상기 제 인 print_r 준다
Array ( [:from] => abc@gmail.com
[:to] => lala@me.com
[:name] => abc
[:subject] => abc
[:message] => abc )
(아무도 널 없음) 예상되는
하지만, 오류를 출력한다
어떤 아이디어는이 문제를 해결하지하는 방법. 어떤 아이디어?
해결법
-
==============================
1.에서는 SQL의 키워드입니다. 당신은 그것을 인용하지 않고 열 이름으로 그것을 사용하지 않을 수 있습니다. MySQL의에서 열 이름 같은 것들, 즉`from` 역 따옴표를 사용하여 인용하고 있습니다.
에서는 SQL의 키워드입니다. 당신은 그것을 인용하지 않고 열 이름으로 그것을 사용하지 않을 수 있습니다. MySQL의에서 열 이름 같은 것들, 즉`from` 역 따옴표를 사용하여 인용하고 있습니다.
개인적으로, 나는 귀찮게하지 것이다; 난 그냥 열 이름을 바꿀 것입니다.
추신. 의견에서 지적했듯이 다른 SQL 키워드가에, 너무, 인용 할 필요가 있도록. 편리하게, drupal.org에서의 사람들은 SQL에서 예약 된 단어의 목록을 유지한다.
-
==============================
2.나는이 정확한 오류를 가지고 있지만, 내 경우에는 내가 유형을 지정하지 않고 LIMIT 절에 대한 값을 결합했다. 난 그냥 경우 누군가 여기에이를 포기하고있어 같은 이유로이 오류를 가져옵니다. 유형 LIMIT 지정하지 않고 : 제한 OFFSET : 오프셋 (offset) '1'오프셋 '10'LIMIT 결과; 대신 한도 10 옵셋 1 ;. 무슨 일이 그 다음이다 해결하는 데 도움이 :
나는이 정확한 오류를 가지고 있지만, 내 경우에는 내가 유형을 지정하지 않고 LIMIT 절에 대한 값을 결합했다. 난 그냥 경우 누군가 여기에이를 포기하고있어 같은 이유로이 오류를 가져옵니다. 유형 LIMIT 지정하지 않고 : 제한 OFFSET : 오프셋 (offset) '1'오프셋 '10'LIMIT 결과; 대신 한도 10 옵셋 1 ;. 무슨 일이 그 다음이다 해결하는 데 도움이 :
$stmt->bindParam(':limit', intval($limit, 10), \PDO::PARAM_INT); $stmt->bindParam(':offset', intval($offset, 10), \PDO::PARAM_INT);
-
==============================
3.SQL 쿼리에서 동일한 PDO 오류 다차원 배열의 데이터베이스 값에 삽입하는 동안 :
SQL 쿼리에서 동일한 PDO 오류 다차원 배열의 데이터베이스 값에 삽입하는 동안 :
$sql = "UPDATE test SET field=arr[$s][a] WHERE id = $id"; $sth = $db->prepare($sql); $sth->execute();
어레이 도착 [$ S [A] SQL 쿼리에서 문제가 해결 함유 대신하여 변수를 추출하는 단계를 포함한다.
-
==============================
4.
ALTER TABLE `{$installer->getTable('sales/quote_payment')}` ADD `custom_field_one` VARCHAR( 255 ) NOT NULL, ADD `custom_field_two` VARCHAR( 255 ) NOT NULL;
역 따옴표 즉 "`"제대로 추가합니다. 역 따옴표 사이에 getTable이 이름과 열 이름을 작성합니다.
from https://stackoverflow.com/questions/4544051/sqlstate42000-syntax-error-or-access-violation-1064-you-have-an-error-in-you by cc-by-sa and MIT license
'SQL' 카테고리의 다른 글
[SQL] 값 당 COUNT에 의해 주문 (0) | 2020.04.14 |
---|---|
[SQL] 펑션에서 저장 프로 시저를 실행합니다 (0) | 2020.04.14 |
[SQL] SQL에서 상단 및 제한 키워드의 차이 (0) | 2020.04.14 |
[SQL] 오라클은 조인 - 비교를 기존의 구문 VS ANSI 구문 사이 (0) | 2020.04.14 |
[SQL] IN 절에서 SQL 여러 열 (0) | 2020.04.14 |