删除MySQL中的行不起作用

时间:2012-09-26 19:52:18

标签: php mysql delete-row

我正在尝试使用下面的PHP代码从MySQL中的表中删除一行。 mysql_affected_rows()的返回值为1.没有错误。但是,该行仍然存在于MySQL中。不知道我做错了什么。有什么想法吗?

$db = array('host'=>'127.0.0.1',  
        'user'=>'root',  
        'pass'=>'',  
        'name'=>'testdb');

// CONNECT TO THE MYSQL SERVER
$connection = mysql_connect($db['host'], $db['user'], $db['pass']);
if(!$connection){
    // HANDLE ERROR HERE
    die('Unable to connect to MySql server : '.mysql_error($connection));
}

// SELECT THE DATABASE SCHEMA
if(!mysql_select_db($db['name'],$connection)){
    // HANDLE ERRORS HERE
    die('Unable to connect to database : '.mysql_error($connection));
}

$result = mysql_query("delete from photos where id=".$photo_id, $connection);
echo mysql_affected_rows($connection);

更新

我将以下代码添加到最后并解决了问题 -

mysql_query("commit", $connection);

感谢您的评论!

2 个答案:

答案 0 :(得分:1)

像你的情况一样应用于innodb表。

mysql_query("BEGIN", $connection); 
// delete code
mysql_query("COMMIT", $connection);

答案 1 :(得分:0)

在这种情况下我通常做的是启用general_log(设置全局general_log_file = general.log;并设置global general_log = 1;)并查看到达那里的内容。

然后问题经常变得明显。

如果还不清楚发生了什么,可以在mysql控制台上运行这些查询......