【问题标题】:SQL Delete query showing, but no actionSQL 删除查询显示,但没有操作
【发布时间】:2012-10-29 21:50:12
【问题描述】:

我的页面上显示的每条记录后都有一个 SQL 删除按钮。我知道按钮应该做什么,但它不起作用!我什至回显$sql 以确保它是正确的并显示以下内容:

DELETE * FROM recensies WHERE ID ='508a7a732ef67' AND email ='info@*****.nl'

当我查看 PHPmyAdmin 中的记录时,我可以看到有一条记录正好包含此信息,但另一方面,这是我的代码,我相信你会明白我的意思.

<?php

// Up here I connect to my DB, no problems there..

$query  = "SELECT * FROM recensies ORDER BY timestamp DESC"; 
$result = mysql_query($query) or die(mysql_error());

if (isset($_POST['verwijderen'])) 
{

    $IDdelete = mysql_real_escape_string($_POST['ID']);
    $emaildelete = mysql_real_escape_string($_POST['email']);

    $sql = "DELETE * FROM recensies "
         . "WHERE ID ='$IDdelete' AND email ='$emaildelete'";

    mysql_query($sql);

    echo $sql;
}

while ($row = mysql_fetch_array($result))
{

?>
<form method="post">
<tr>
<td><?php echo $row['cijfer']; ?></td>
<td><input type="text" name="ID" value="<?php echo $row['ID']; ?>"></input></td>
<td><?php $newb = substr($row['beoordeling'], 0, 30); echo $newb; ?>..</td>
<td><?php echo $row['voornaam']; ?> <?php echo $row['achternaam']; ?></td>
<td><input type="text" name="email" value="<?php echo $row['email']; ?>"></td>
<td><?php $datum = date("j/n/y", strtotime($row[timestamp])); echo $datum; ?></td>
<td><input type="submit" value="Verwijderen" name="verwijderen"></td>
</tr>
</form>

<?php

}

?>

</table>

</div>

</div>

我就是找不到我的错误!

【问题讨论】:

  • 删除总是意味着整行,这就是为什么 sql 不允许提及 * 或任何字段名的原因。删除意味着删除而不是擦除。如果您不使用 where 指定行,则从某个表中删除 .. 删除所有行。

标签: php sql database sql-delete


【解决方案1】:

我不知道这是否是您的问题,但 DELETE 语法不需要列列表(查询中的 *): 你应该写

DELETE FROM recensies WHERE ID = ...

没有*

【讨论】:

    【解决方案2】:

    我认为您需要从删除语句中删除 *,所以像这样:

    DELETE FROM recensies WHERE ID ='508a7a732ef67' AND email ='info@*****.nl'
    

    【讨论】:

    • 谢谢,已经解决了,既然你是第一个回答的,我会把这个标记为接受的!
    • @a_horse_with_no_name 你是对的,我引用了w3schools 但看起来他们又错了......
    • 众所周知,w3schools 的发布质量非常低。我只是浏览了一些页面,只用了 2 分钟就发现了更多错误。
    【解决方案3】:

    改变

    $sql = "DELETE * FROM recensies WHERE ID ='$IDdelete' AND email ='$emaildelete'";
    

    到

    $sql = "DELETE FROM recensies WHERE ID ='$IDdelete' AND email ='$emaildelete'";
    

    删除*。

    试试

    mysql_query($sql);
    echo mysql_error();
    

    你应该有一个错误提示

    您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 在第 1 行的 '* from recencies' 附近:

    【讨论】:

    • 谢谢!额外的 * 是问题所在!
    猜你喜欢
    • 1970-01-01
    • 2011-08-17
    • 2015-09-12
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多