我正在尝试使用下面的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);
感谢您的评论!
答案 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控制台上运行这些查询......