私は多くのチュートリアルに続き、deleteステートメントに関する多数のフォーラムやpdo phpでの使い方に関する多くの質問を読んできました。私はバインドされたパラメータではなく、バインドされたパラメータを使用し、準備された関数を使用し、変数とインデックスを定義しました。インデックスページで削除リンクをクリックすると、プログラムはエラーなしで削除ページにリダイレクトされますが、テーブルから行は削除されません。私はできるだけシンプルにするために、わずか2列でプログラムを小さくしました。そして、私は3日間にわたって疲れてしまうまで、それぞれのチュートリアルとサンプルで正確な構文を使用しました。もし誰かが私に私が正しくやっていないことを見せることができれば、それを感謝します。インデックスページからリンクとdelete.phpページを使ってコードを投稿します。すべての点でFred-ii-私はすべての答えを読んだ。切り捨ては私には当てはまりません。なぜなら私はテーブルだけを削除したくないからです。 WHERE句を使用するので、すべての行を削除する必要はありません。類似している他の質問とは違って、私は何の誤りもありません。私のコードを提案したものに書き直しましたが、私の削除構文はまだ私のインデックスページの行を削除していません。私のWHERE句は、データベース内の主キーであるname_idを指しています。どうすればpdo php crud doen'tで私のdeleteステートメントが来る
<p><td><a href="delete.php?name_id=<?php echo $row['name_id']; ?>">Delete</a></td></p>
And here is the code from the delete page.
require_once 'debase.php';
// Get the name to delete
if(isset($_GET['name_id'])){
$name_id = $_GET['name_id'];
try{
//$dns ="mysql:host=localhost;dbname=$db;charset=$charset";
$conn = new PDO($dsn,$user,$pass);
$stmt = $conn->prepare("DELETE * FROM student WHERE name_id=':name_id'");
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$stmt->bindValue(':name_id',$name_id, PDO::PARAM_STR);
$stmt->execute();
} catch (PDOException $e){
$error_message = $e->getMessage();
$conn = null;
}
}
ラウンド引用符を削除し、パラメータ化クエリが引用されたパラメータは必要ありません。 – miken32
*と引用符を削除するとうまくいくはずですか? – swydell
また、 'name_id = ':name_id''を' name_id =:name_id'に変更してください。 – RiggsFolly