我的delete语句在pdo php crud中怎么不起作用
问题描述:
我已经遵循了一些教程,在一些论坛上阅读了很多关于delete语句以及如何在pdo php中使用它的问题。我绑定了参数,没有绑定参数,使用了准备函数,定义了我的变量和索引。当我单击索引页上的删除链接时,程序将重定向到删除页面,但不会发生错误,但不会从表中删除该行。我只用两列就使我的程序变得简单,使其尽可能简单。我已经使用了每个教程和我遵循的示例的确切语法,直到我耗尽三天时间。如果有人能告诉我我做得不对,我会很感激。我将从链接和delete.php页面的索引页面发布代码。在所有适当的尊重Fred-ii-我已阅读所有的答案。截断不适用于我,因为我不想删除一个表,只有一行。我不想删除所有的行,所以我使用WHERE子句。与其他类似的问题不同,我没有收到任何错误。我将我的代码重新编写为建议的内容,但是我的删除语法仍然不会删除索引页中的行。我的WHERE子句指向name_id,它是我的数据库中的主键。我的delete语句在pdo php crud中怎么不起作用
<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'
此外,参数化查询不需要引用参数。 – miken32
因此,如果我删除*和引号,它应该工作? – swydell
还将'name_id =':name_id''更改为'name_id =:name_id' – RiggsFolly