Before
php
1try {
2 $db = new PDO('mysql:host=localhost;dbname=project;charset=utf8', 'phpusr', 'phppass');
3 if (isset($_POST['update'])) {
4 $stt = $db->prepare('UPDATE project SET ucheck=:ucheck WHERE uid=:uid');
5 $stt->bindValue(':ucheck', $_POST['ucheck']);
6 $stt->bindValue(':uid', $_POST['uid']);
7 $stt->execute();
8 }
9} catch(PDOException $e) {
10 die('エラーメッセージ:'.$e->getMessage());
11}
After
php
1// デバッグコード
2// 開発中は常にコレを記述することをお勧めします。
3error_reporting(E_ALL);
4ini_set('display_errors', 1);
5
6try {
7 $db = new PDO('mysql:host=localhost;dbname=project;charset=utf8', 'phpusr', 'phppass');
8
9 // 他の箇所で特に設定していない場合、これを実行しないとエラー発生時に例外が投げられない
10 $db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
11
12 if (isset($_POST['update'])) {
13 $stt = $db->prepare('UPDATE project SET ucheck=:ucheck WHERE uid=:uid');
14
15 for (int $i = 0; $i < count($_POST['uid']); $i++) {
16 $stt->bindValue(':ucheck', $_POST['ucheck'][$i]);
17 $stt->bindValue(':uid', $_POST['uid'][$i]);
18 $stt->execute();
19 }
20 }
21} catch(PDOException $e) {
22 die('エラーメッセージ:'.$e->getMessage());
23}
ちなみに、本当はリクエストパラメータをサニタイズせずプログラム内で使用するのはよろしくありません。
($stt->bindValue(':ucheck', $_POST['ucheck'][$i]);
などの部分のこと)
http://www.weblio.jp/content/%E3%82%B5%E3%83%8B%E3%82%BF%E3%82%A4%E3%82%BA
その対策については、以下などを参考にまずはご自分で考えてみてください。
http://php.net/manual/ja/function.filter-input.php
http://php.net/manual/ja/function.filter-input-array.php