お世話になりあmす。
下部の$comb配列があり$comb[$ii][0]の数値がRDSのテーブルsecidに存在し、これをkeyにして、comb[$ii][1]及びcomb[$ii][2]をfor文で順番に格納していきたいのですが、うまくいきません。エラー結果は下部の通りでした。
問題はWHERE secid = $comb[$ii][0]かと思うのですが
このような条件Where句はPDOで許容されないのでしょうか?
実際にはこの条件とプレースホルダに数値及び変数を入れると正しくmysqlにデータがupdateされます。
WHERE secid =8951;
$a=6;
$b=12;
$stmt->bindParam(':first', $a, PDO::PARAM_INT);
$stmt->bindParam(':second', $b, PDO::PARAM_INT);
どなたか、この原因と解決法をご教示願えませんでしょうか。
よろしくお願い申し上げます。
配列$comb array(57) { [0]=> array(3) { [0]=> string(4) "8951" [1]=> string(2) "6 " [2]=> string(3) " 12" } [1]=> array(3) { [0]=> string(4) "8952" [1]=> string(2) "3 " [2]=> string(2) " 9" } [2]=> array(3) { [0]=> string(4) "8953" [1]=> string(2) "2 " [2]=> string(2) " 8" 以下,省略
$dsn = 'XXX'; $user = 'XXX'; $password = 'XXX'; try { $pdo = new PDO($dsn, $user, $password); $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); for ($ii=0; $ii <=57; $ii++) { $stmt = $pdo->prepare("UPDATE wp5_entitymaster SET first=:first, second=:second WHERE secid = $comb[$ii][0]"); $stmt->bindParam(':first', $comb[$ii][1], PDO::PARAM_INT); $stmt->bindParam(':second', $comb[$ii][2], PDO::PARAM_INT); $stmt->execute(); } }catch (PDOException $e){ var_dump($e->getMessage());
string(207) "SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '['0']' at line 1"
回答3件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2016/09/01 12:51