16

我正在将数据插入 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";
?>
4

5 回答 5

39
$result = mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')"));
if($result)
{
echo "Success";

}
else
{
echo "Error";

}
于 2012-07-25T12:54:31.407 回答
7

根据PHP and MySQL for Dynamic Web Sites (4th edition)一书

例子:

$r = mysqli_query($dbc, $q);

对于像INSERTUPDATEDELETE等简单查询(不返回记录),$r变量(结果的缩写)将是TRUEFALSE,具体取决于查询是否成功执行。

请记住,“执行成功”意味着它运行没有错误;这并不意味着查询的执行一定会产生预期的结果;您需要对此进行测试。

那么如何测试呢?

虽然该mysqli_num_rows()函数将返回SELECT查询生成的行mysqli_affected_rows()数,但返回受INSERTUPDATEDELETE查询影响的行数。它是这样使用的:

$num = mysqli_affected_rows($dbc);

与 不同mysqli_num_rows()的是,该函数采用的一个参数是数据库连接($dbc),而不是前一个查询的结果($r)。

于 2015-01-21T08:33:31.107 回答
3

查询后INSERT,您可以使用ROW_COUNT()以下方式检查插入操作是否成功:

SELECT IF(ROW_COUNT() = 1,  "Insert Success", "Insert Failed") As status;
于 2012-07-25T12:55:00.017 回答
2

检查: http: //php.net/manual/en/function.mysql-affected-rows.php

于 2012-07-25T12:57:17.087 回答
2
if (mysql_query("INSERT INTO PEOPLE (NAME ) VALUES ('COLE')")or die(mysql_error())) {
  echo 'Success';
} else {
  echo 'Fail';
} 

虽然既然你有or die(mysql_error())它,它会在失败时在屏幕上显示 mysql_error() 。如果它不是所需的结果,您可能应该删除它

于 2012-07-25T12:55:04.673 回答