PHPで複数フィールドをPDOを使い、MySQLにてアップロードする方法についてまとめていきたいと思います。7月2日記事

目次



概要

一つずつ実行していく感じです。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; } 
}	
?>

注意:データのエラーチェック、妥当性は省いています。

コード(データベース文字コードが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を使いましょう

以上

最終更新:2015年07月03日 20:09