「PHPで複数フィールドの一括アップデート方法」の編集履歴(バックアップ)一覧はこちら
追加された行は緑色になります。
削除された行は赤色になります。
PHPで複数フィールドをPDOを使い、MySQLにてアップロードする方法についてまとめていきたいと思います。7月2日記事
~
~
目次
#contents
~
~
*概要
一つずつ実行していく感じです。pdoでそれぞれidとパラメータをチェックしていきます。
~
~
*コード(データベース文字コード変換つきコード)
データベースの文字コードがUTF-8の方はmb_convert_encoding関数はいりません。
<?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; }
}
?>
&color(red){注意:データのエラーチェック、妥当性は省いています。}
~
ダンプでまず受信できてるかどうかを確認してから、作成に取り掛かった方がやりやすいかもしれません。
PDOのbindValueについては、数字、文字列、URLなど色々な型があるので、型を調べて適切なbindValueを使いましょう
~
~
以上
PHPで複数フィールドをPDOを使い、MySQLにてアップロードする方法についてまとめていきたいと思います。7月2日記事
~
~
目次
#contents
~
~
*概要
一つずつ実行していく感じです。pdoでそれぞれidとパラメータをチェックしていきます。
~
~
*コード(データベース文字コードがEUC-JPで、ファイルがUTF-8の場合)
<?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; }
}
?>
&color(red){注意:データのエラーチェック、妥当性は省いています。}
~
~
*コード(データベース文字コードがUTF-8で、ファイルがUTF-8の場合)
<?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を使いましょう
~
~
以上