用于删除行的PHP MySql查询不起作用

时间:2010-10-17 16:10:26

标签: php mysql sql sql-delete

我有这个PHP脚本:

foreach (get_all_topics () as $topic_id => $topic_info) {
   $result = mysql_query("DELETE FROM marks 
                           WHERE user_id = $user_id 
                            AND topic_id = $topic_id", $db);
    echo "DELETE FROM marks 
           WHERE user_id = $user_id 
             AND topic_id = $topic_id : " . mysql_error() . " : " . mysql_affected_rows();
}

我设置了有效的$user_idget_all_topics()提供了由echo打印的有效主题信息。但是它始终返回false并且我有user_id = 1 AND topic_id = 1的数据(如果我在交互式mysql提示符中复制并粘贴echo ed字符串,它也会被删除 - 所以没有拼写错误!)。

注意:插入或更新表格的其他功能正常。我正在学习php - mysql,这是我第一次从数据库中删除一些内容。任何人都可以建议这个脚本的问题是什么?或者这可能存在任何权限问题吗?

4 个答案:

答案 0 :(得分:1)

尝试在$ user_id和$ topic_id周围放置单引号,以便您的代码

mysql_query( "DELETE FROM marks WHERE user_id='$user_id' AND topic_id='$topic_id'", $db );

答案 1 :(得分:1)

  1. 使用in(id1,id2,id3)
  2. 删除所有这些行
  3. 您尚未在查询中指定数据库(可能您之前已选择数据库) - 使用databasenametablename
  4. 这取决于你的mysql_error返回的内容,因为false表示存在错误。
  5. 可能会以某种方式暂停错误,因此请查看错误日志。
  6. PHP Mysql Query Manual page

答案 2 :(得分:0)

我想构建一个查询字符串:

$myQuery = "DELETE FROM marks WHERE user_id= " . $user_id . "AND topic_id=" . $topic_id;
mysql_query($myQuery);

答案 3 :(得分:-1)

OP写道:

  

我已将上面的代码更改为

$all_topics = get_all_topics();

foreach ($all_topics as $topic_id => $topic_info) {
   $result = mysql_query("DELETE FROM marks 
                           WHERE user_id = $user_id 
                            AND topic_id = $topic_id", $db);
    echo "DELETE FROM marks 
           WHERE user_id = $user_id 
             AND topic_id = $topic_id : " . mysql_error() . " : " . mysql_affected_rows();
}
     

它有效!任何有类似问题的人都可以尝试将返回值赋给某个​​临时变量,然后在foreach循环中使用它。不知道它为什么会起作用。