PHPで複数フィールドをPDOを使い、MySQLにてアップロードする方法についてまとめていきたいと思います。7月2日記事
目次
一つずつ実行していく感じです。pdoでそれぞれidとパラメータをチェックしていきます。
<?php $dsn = 'mysql:dbname='.DB_NAME.';host='.DB_HOST.';port='.DB_PORT.''; $user = DB_USER; $password = DB_PASSWORD; //データベース接続&接続しなければエラー try{ $dbh = new PDO($dsn, $user, $password); }catch (PDOException $e){ print('Connection failed:'.$e->getMessage()); die(); } //var_dump($_POST); $array = $_POST[data]; //ダンプ //var_dump($array); $stmt = $dbh->prepare("UPDATE table_name SET column1=:column1, column2=:column2 where id=:id"); foreach ($array as $row=>$value) { $stmt->bindValue(':id', mb_convert_encoding($value[id],"EUC-JP","UTF-8"), PDO::PARAM_INT); $stmt->bindValue(':column1', mb_convert_encoding($value[column1],"EUC-JP","UTF-8"), PDO::PARAM_STR); $stmt->bindValue(':column2', mb_convert_encoding($value[column2],"EUC-JP","UTF-8"), PDO::PARAM_STR); $stmt->execute(); if ($stmt->rowCount() === 1) { continue; } } ?>
注意:データのエラーチェック、妥当性は省いています。
<?php $dsn = 'mysql:dbname='.DB_NAME.';host='.DB_HOST.';port='.DB_PORT.''; $user = DB_USER; $password = DB_PASSWORD; //データベース接続&接続しなければエラー try{ $dbh = new PDO($dsn, $user, $password); }catch (PDOException $e){ print('Connection failed:'.$e->getMessage()); die(); } //var_dump($_POST); $array = $_POST[data]; //ダンプ //var_dump($array); $stmt = $dbh->prepare("UPDATE table_name SET column1=:column1, column2=:column2 where id=:id"); foreach ($array as $row=>$value) { $stmt->bindValue(':id', $value[id], PDO::PARAM_INT); $stmt->bindValue(':column1', $value[column1], PDO::PARAM_STR); $stmt->bindValue(':column2', $value[column2], PDO::PARAM_STR); $stmt->execute(); if ($stmt->rowCount() === 1) { continue; } } ?>
ダンプでまず受信できてるかどうかを確認してから、作成に取り掛かった方がやりやすいかもしれません。
PDOのbindValueについては、数字、文字列、URLなど色々な型があるので、型を調べて適切なbindValueを使いましょう
以上