如何在代码中检查插入成功?
我尝试在下面测试我的代码,但它不起作用。它每次只返回 insert 。
<?PHP
include("connect.php");
$sql = "INSERT INTO details (name , month , description)
SELECT name , month , description
FROM details_temporary WHERE id = 'xxxxxx'";
$dbQuery = mysql_query($sql);
if($dbQuery) {
echo "insert";
}
else {
echo "not insert";
}
?>
答案 0 :(得分:1)
Please, don't use mysql_* functions in new code. 它们不再被维护,deprecation process已经开始了。看到 red box? 了解prepared statements, 并使用PDO或 MySQLi - 这个 article会 帮你决定哪个。
使用MySQLi功能的示例如下:
$mysqli = new mysqli('localhost', 'root', 'password', 'database_name');
$sql = "INSERT INTO details (name, month, description) VALUES ('Alex', 'October', 'My Birthday')";
$result= $mysqli -> query($sql);
$affected = $mysqli -> affected_rows;
if($affected == 1){
echo 'Inserted';
}else{
echo 'Did not insert';
}
答案 1 :(得分:0)
首先,不要使用MySQL函数,它们已被弃用且不安全,请查看使用MySQLi或PDO。
其次,MySQL只会在失败时返回错误,因此您只需运行:
if (!$dbQuery) {
die('Invalid query: ' . mysql_error());
}
如果不成功,这将会死并打印错误。
如果要进一步检查,可以检查mysqli_insert_id(),因为只有在查询成功时才会设置(仅适用于插入,而不适用于更新等)。
答案 2 :(得分:0)
您正在使用INSERT FROM SELECT,如果select没有结果,那么它将不会插入任何内容,并且在$ dbQuery中仍然为true。
使用mysql_affected_rows.:获取先前MySQL操作中受影响的行数
从PHP 5.5开始,不推荐使用mysql_ *函数如果您正在开发一个新项目而不是更改旧项目,最好使用pdo / mysqli等。