为什么我在 pdo php crud 中的删除语句不起作用
how come my delete statement in pdo php crud doen't work
我已经学习了很多教程,在很多论坛上阅读了很多关于 delete 语句以及如何在 pdo 中使用它的问题 php。我有绑定参数,没有绑定参数,使用了准备好的函数,定义了我的变量和索引。当我单击索引页上的删除 link 时,程序会无错误地重定向到删除页,但不会从 table 中删除该行。我将我的程序缩小到只有两列,以使其尽可能简单。我在我遵循的每个教程和示例中都使用了准确的语法,直到我在三天内精疲力尽。如果有人能告诉我我做错了什么,我将不胜感激。我将使用 link 和 delete.php 页面从索引页面 post 编写代码。恕我直言,Fred-ii- 我已经阅读了所有答案。截断不适用于我,因为我不想删除 table,只删除一行。我不想删除所有行,所以我使用 WHERE 子句。与其他类似的问题不同,我没有收到任何错误。我按照建议重写了代码,但我的删除语法仍然没有删除索引页中的行。我的 WHERE 子句指向 name_id 这是我数据库中的主键。
<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;
}
}
您的 SQL 语法不正确。
你只是 DELETE FROM ...
而不是 DELETE * FROM
...
并删除 ':name_id'
两边的引号
我已经学习了很多教程,在很多论坛上阅读了很多关于 delete 语句以及如何在 pdo 中使用它的问题 php。我有绑定参数,没有绑定参数,使用了准备好的函数,定义了我的变量和索引。当我单击索引页上的删除 link 时,程序会无错误地重定向到删除页,但不会从 table 中删除该行。我将我的程序缩小到只有两列,以使其尽可能简单。我在我遵循的每个教程和示例中都使用了准确的语法,直到我在三天内精疲力尽。如果有人能告诉我我做错了什么,我将不胜感激。我将使用 link 和 delete.php 页面从索引页面 post 编写代码。恕我直言,Fred-ii- 我已经阅读了所有答案。截断不适用于我,因为我不想删除 table,只删除一行。我不想删除所有行,所以我使用 WHERE 子句。与其他类似的问题不同,我没有收到任何错误。我按照建议重写了代码,但我的删除语法仍然没有删除索引页中的行。我的 WHERE 子句指向 name_id 这是我数据库中的主键。
<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;
}
}
您的 SQL 语法不正确。
你只是 DELETE FROM ...
而不是 DELETE * FROM
...
并删除 ':name_id'