pdoを使用してSQLサーバーに接続するために、Windows Apache環境でPHPを使用しています。私のコードはエラーなしで完全に実行されていました。pdo挿入クエリが機能しないWindowsマシンの最近の更新。このエラーが最近の変更によるものではないことを確認するために、SVN から古いバージョンに戻しました。それでも同じエラーが存在します。
エラーは
INSERT INTO contactus(contactref, title, first_name, last_name, email) VALUES('35008679022', 'Mr', 'Robin', 'Michael', 'robin@robin.com')
上記のクエリはエラーを返します
Array ( [0] => HY000 [1] => 10007 [2] => Incorrect syntax near '35008679022[10007] (severity 5) [INSERT INTO contactus(contactref, title, first_name, last_name, email) VALUES('Mr] [3] => -1 [4] => 5 )
しかし、クエリをコピーしてSQLサーバー管理スタジオで実行すると、エラーなしで実行されます。
誰でもこの問題を見つけるのを手伝ってもらえますか?
function newInsertQuery( $tbl, $flds, $prepVals, $valsArr ) {
try {
$dbcon = $this->mysqlConnect();
$q = "INSERT INTO $tbl($flds) VALUES($prepVals)";
$prep = $dbcon->prepare($q);
if( $prep->execute($valsArr) ) {
$rq = 1;
$q = "SELECT SCOPE_IDENTITY() as ins_id";
$rq = $dbcon->query($q);
$optArr = $rq->fetchAll(PDO::FETCH_ASSOC);
$_SESSION['last_id'] = $optArr[0]['ins_id'];
}
else {
$rq = 0;
}
$_SESSION['q_error'] = $dbcon->errorInfo();
}
catch( Exception $ex ) {
$rq = 0;
echo $ex->getMessage();
}
//clear connection
$dbcon = null;
return $rq;
}
エラーの原因となっている実際の機能
$flds = 'contactref, title, first_name, last_name, email';
$prepVals = '?, ?, ?, ?, ?';
$valsArr = array('35008679022', 'Mr', 'Robin', 'Michael', 'robin@robin.com');
newInsertQuery('contactus', $flds, $prepVals, $valsArr);