我的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; 
} 
} 

enter image description here

你的SQL语法不正确。
你只是DELETE FROM ...而不是DELETE * FROM ...

和删除引号轮':name_id'

+0

此外,参数化查询不需要引用参数。 – miken32

+0

因此,如果我删除*和引号,它应该工作? – swydell

+0

还将'name_id =':name_id''更改为'name_id =:name_id' – RiggsFolly