phpからMySQLへの書き込みを行いたい
何故かNo0のデータにすべて書き込もうとしてしまうのが現状です。
入力データはNo81スタートで0は入っていないことをコード中のvar_dump($tmp)で確認しました。
ON DUPLICATE KEY UPDATEをつけたら全て0に書かれてしまいデータのどれかが間違っているというわけではないようです。
SQL文の間違いではないかと思うのですが、自分で検索した限り間違いはないように思うのです。
SQLの主キー、ユニークはNo
になっています。
発生している問題・エラーメッセージ
SQLSTATE[23000]: Integrity constraint violation: 1062 Duplicate entry '0' for key 'PRIMARY'
該当のソースコード
PHP
1foreach($dataArr as $tmp){ 2 //var_dump($tmp); 3 dbset($tmp); 4} 5var_dump("ok222"); 6function dbset($set){ 7 try{ 8 $sql_str="INSERT INTO `image_data`(`No`, `title`, `img`, `img_name`, `time`, `comment`, `Year`, `Seasons`, `Class`, `link_name`,`link_url`) 9 VALUES (:no, :title, :img, :name, :date, :comment, :year, :season, :class, :link_name, :link_url)"; 10 //文字エンコーディング 11 $dbh = new PDO(SQLSETTING, USERNAME, PASSWORD, 12 array( 13 PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION, 14 PDO::MYSQL_ATTR_MULTI_STATEMENTS => false, 15 PDO::ATTR_EMULATE_PREPARES => false 16 ) 17 ); 18 $stmt = $dbh->prepare($sql_str); 19 $stmt->setFetchMode(PDO::FETCH_ASSOC); 20 $a = $set["no"]; 21 $stmt->bindParam(':no', $a, PDO::PARAM_STR); 22 $b = $set["title"]; 23 $stmt->bindParam(':title', $b, PDO::PARAM_STR); 24 $c = $set["img"]; 25 $stmt->bindParam(':img', $c, PDO::PARAM_STR); 26 $a = $set["name"]; 27 $stmt->bindParam(':name', $a, PDO::PARAM_STR); 28 $b = $set["date"]; 29 $stmt->bindParam(':date', $b, PDO::PARAM_STR); 30 $c = $set["comment"]; 31 $stmt->bindParam(':comment', $c, PDO::PARAM_STR); 32 $a = $set["year"]; 33 $stmt->bindParam(':year', $a, PDO::PARAM_STR); 34 $b = $set["season"]; 35 $stmt->bindParam(':season', $b, PDO::PARAM_STR); 36 $c = $set["class"]; 37 $stmt->bindParam(':class', $c, PDO::PARAM_STR); 38 $a = $set["link_name"]; 39 $stmt->bindParam(':link_name', $a, PDO::PARAM_STR); 40 $b = $set["link_url"]; 41 $stmt->bindParam(':link_url', $b, PDO::PARAM_STR); 42 //SQL実行 43 $stmt->execute(); 44 }catch(PDOException $e){ 45 echo $e->getMessage(); 46 }finally{ 47 echo "func_end"; 48 } 49}
PHP
1array(12) { 2 ["no"]=> 3 int(84) 4 ["title"]=> 5 string(27) "ツマグロヒョウモン" 6 ["img"]=> 7 string(20357) "????JFIF``??>CREATOR: gd-jpeg v1.0 (using IJG JPEG v90), default quality 8バイナリデータは省略します。" 9 ["name"]=> 10 string(8) "04_09_26" 11 ["date"]=> 12 string(8) "04_09_26" 13 ["comment"]=> 14 string(6) "交尾" 15 ["year"]=> 16 string(2) "04" 17 ["season"]=> 18 string(3) "aut" 19 ["class"]=> 20 string(4) "tyou" 21 ["link_name"]=> 22 string(64) "「リンク名」" 23 ["link_url"]=> 24 string(48) "http:/hogehoge.co.jp/hoge.shtml"
回答2件
あなたの回答
tips
プレビュー