我正在将数据插入MySQL数据库,如果插入失败,我需要提供相应的错误消息,指示如此。根据我的代码,如果插入成功或失败,我将Echo-ing
消息Inserted
。
我想要做的是仅在数据插入成功时回显Inserted
消息,如果失败则返回fail
。如何修改我的代码呢?
<?php
mysql_connect("localhost", "root", "123") or die(mysql_error());
mysql_select_db("swm_database") or die(mysql_error());
mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')")or die(mysql_error());
echo "Inserted";
?>
答案 0 :(得分:28)
$result = mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')"));
if($result)
{
echo "Success";
}
else
{
echo "Error";
}
答案 1 :(得分:4)
根据书PHP and MySQL for Dynamic Web Sites (4th edition)
示例:强>
$r = mysqli_query($dbc, $q);
对于简单查询,例如 INSERT ,更新,删除等(不返回记录),$r
结果的变量 - 缩写将是 TRUE 或 FALSE ,具体取决于查询是否成功执行。
请记住,“已成功执行”意味着它无误地运行;它 并不意味着查询的执行必然具有所需的结果;你需要测试它。
然后如何测试?
虽然mysqli_num_rows()
函数将返回 SELECT 查询生成的行数,但mysqli_affected_rows()
会返回受 INSERT ,更新或删除查询。它的使用方式如下:
$num = mysqli_affected_rows($dbc);
与mysqli_num_rows()
不同,函数采用的一个参数是数据库连接( $ dbc ),而不是上一个查询的结果( $ r )
答案 2 :(得分:3)
在INSERT
查询后,您可以使用ROW_COUNT()
检查插入操作是否成功:
SELECT IF(ROW_COUNT() = 1, "Insert Success", "Insert Failed") As status;
答案 3 :(得分:2)
答案 4 :(得分:1)
if (mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')")or die(mysql_error())) {
echo 'Success';
} else {
echo 'Fail';
}
虽然你有or die(mysql_error())
,但是当它失败时它会在屏幕上显示mysql_error()。如果不是理想的结果,你应该删除它