質問が古くなりましたので改めて質問いたします。
HP上からDBに登録したレコードを削除しようと以下の手順で記述してみましたが、最後がif(flag){elseの結果になってしまいますどなたかお導きいただけませんでしょうか。
DBには primary、auto_incrementで設定したc0de、全角文字8字までの名前が入ったstaff_namae、md6方式で32桁の暗号化された英数字のパスワードがstaff_passに入っています。
sql文以外同じ内容でUPDATE文は成功していますのでmysql=DELETE・・・からdbh = nullの間に原因があるのではないかと思いますが、それが何かが分かりませんどうかよろしくお願いいたします。
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);
}
?>
削除確認
try
{
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>回答2件
あなたの回答
tips
プレビュー
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
2014/12/22 05:00
2014/12/22 05:34
2014/12/22 05:38