質問を再編集させていただきます以前から質問させていただいてる件ですが、エラーコードの設定が出来なく分かりにくいのですがどうか教えてください。
以下の内容でPHPとMySQLを利用してHP上からのDB内の登録レコードを削除しようとしましたが、最後のif($flag){の結果がelseになってしまいますどうか教えていただけませんでしょうかお願いいたします。
DBには。primary、auto_incrementに設定したcode、全角文字8字以内の名前staff_namae、md5方式で暗号化された半角英数字32字のパスワードがstaff_passに入っています。
SQL文以外が同じ内容でUPDATE文では成功いたしておりますので、DELETE文に問題があると思いますがそれが何かが分からないのでなにとぞお願いいたします。
DB構造
mysql> show fields from mst_staff;
+-------------+-------------+------+-----+---------+----------------+
| Field | Type | Null | Key | Default | Extra |
+-------------+-------------+------+-----+---------+----------------+
| code | int(11) | NO | PRI | NULL | auto_increment |
| staff_namae | varchar(16) | NO | | NULL | |
| staff_pass | varchar(32) | NO | | NULL | |
+-------------+-------------+------+-----+---------+----------------+
一覧
$dsn='mysql:dbname=shopdb;host=localhost';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->query('SETNAMES utf8');
$sql = 'SELECT code,staff_namae FROM mst_staff WHERE 1'; $stmt=$dbh->prepare($sql); $stmt->execute(); $dbh = null; print 'スタッフ一覧<br /><br />'; print '<form method="post" action="staff_branch.php">'; while(true) { $rec = $stmt->fetch(PDO::FETCH_ASSOC); if($rec==false) { break; } print '<input type="radio" name="staffcode" value="'.$rec['code'].'">'; print $rec['staff_namae']; print '</br>'; } print '</br>'; print '<input type="submit" name="edit" value="修正">'; print '<input type="submit" name="delete" value="削除">';
見えないページ"staff_branch.php"で修正と削除の処理をを分岐させて
<?php if(isset($_POST['edit'])==true) { if(isset($_POST['staffcode'])==false) { header('Location:staff_ng.php'); } $staff_code=$_POST['staffcode']; header('Location:staff_edit.php?staffcode='.$staff_code); } if(isset($_POST['delete'])==true) { if(isset($_POST['staffcode'])==false) { header('Location:staff_ng.php'); } $staff_code=$_POST['staffcode']; header('Location:staff_delete.php?staffcode='.$staff_code); } ?>削除確認
<body> <div id="contents"> <?phptry
{
if (isset($_GET["staffcode"])) {
$staff_code= $_GET['staffcode'];
}
$dsn='mysql:dbname=shopdb;host=localhost';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->query('SETNAMES utf8');
$sql = 'SELECT staff_namae FROM mst_staff WHERE code=?';
$stmt=$dbh->prepare($sql);
$data[0]=$staff_code;
$stmt->execute($data);
$rec = $stmt->fetch(PDO::FETCH_ASSOC);
$staff_namae=$rec['staff_namae'];
$dbh = null;
}
catch (Exception $e)
{
print 'ただいま障害により、たいへんご迷惑をお掛けしております。';
exit();
}
?>
<h3>スタッフ削除</h3><br /> <br /> <br /> <h3>スタッフコード</h3><br /> <?php print $staff_code;?> <br /> <br /> <h3>スタッフ名</h3><br /> <?php print $staff_namae;?> <br /><br /> <h3>みのスタッフを削除してもよろしいですか?</h3><br /><br /> <form method="post" action="staff_delete_done.php"> <input type="hidden" name="staffcode" value="<?php print $staff_code;?>"> <br> <input type="hidden" onclick="history.back()" value="戻る"> <br /><br /> <input type="submit" value="削除実行"> </form> </div> </body> 削除実行 <?phptry
{
if (isset($_POST["staffcode"])) {
$staff_code = $_POST['staffcode'];
}
$dsn='mysql:dbname=shopdb;host=localhost';
$user='root';
$password='';
$dbh=new PDO($dsn,$user,$password);
$dbh->query('SETNAMES utf8');
$sql = 'DELETE FROM mst_staff WHERE code? = delete code';
$stmt = $dbh->prepare($sql);
$data[0] = $staff_code;
$flag = $stmt->execute(array($data[0]));
$dbh = null;
if ($flag){
print ('データーを削除しました。<br />');
}
else{
print ('データーを削除できませんでした。<br />');
}
}
catch(Exception $e)
{
print 'ただいま障害により、たいへんご迷惑をお掛けしております。';
exit();
}
?>
<h3><a href="staff_list.php">スタッフ一覧へ</a></h3>
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。