2011-07-19 11 views
1

PHP PDOインサート:私はPDO挿入して壁にヒットしました問題

$q = $dbh->prepare('INSERT INTO grant (grant_name, update) VALUES (?,?)'); 
$q->bindParam(1, $grant_name, PDO::PARAM_STR); 
$q->bindParam(2, $update, PDO::PARAM_STR); 
$q->execute(); 

私はエラーを取得:

PHP Warning: PDOStatement::execute(): SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; 

をしかし、私は問題を見つけることができません。私はプレースホルダ(grant_nameなど)を使用し、疑問符(?)を使用しようとしました。

+2

予約語は「更新」されていませんか? backticksに 'update'を入れてみてください。 –

+0

'$ grant_name 'のように1つのフィールドでも失敗します。 – tcrabtree

+1

これは、' GRANT'も予約語であるためです! – Brad

答えて

1

列名がUPDATEの場合、問題が発生しているようです。列名を引用するか、列名を予約語ではないものに変更してみてください。

6

GRANTUPDATEの両方がSQLで特定の意味を持ちます。試してみてください:

$q = $dbh->prepare('INSERT INTO `grant` (`grant_name`, `update`) VALUES (?,?)'); 
関連する問題