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を使いましょう
以上