有时候,mysql_query() 失败了,导致数据无法插入,而我并不知道。那么问题来了,如何知道它失败了呢?
mysql_query
的文档页面:SELECT
、SHOW
、DESCRIBE
、EXPLAIN
和其他语句,mysql_query()
在成功时返回一个resource
,在错误时返回FALSE
。INSERT
、UPDATE
、DELETE
、DROP
等,mysql_query()
在成功时返回TRUE
,在错误时返回FALSE
。mysql_query
的调用的返回值。$result = mysql_query('...');
if ($result === false) {
// And error has occured while executing
// the SQL query
}
mysql_error
和mysql_errno
。不过要记住:用户不需要知道(也不会理解)技术性的错误信息,所以不要显示出来。
我通常进行的一个检查,类似于这个例子:
$result = mysql_query( $query );
if ( !empty( $error = mysql_error() ) )
{
echo 'Mysql error '. $error ."<br />\n";
}
else
{
// the query ran successfully
}
这是任何类型查询的好检查方式。
在执行插入/更新/删除查询后,您可以通过执行以下查询来检查MySQL已插入/更新/删除的行数。
SELECT ROW_COUNT() as rows_affected
0
,则插入失败。如果返回值为1
或更多,则表示成功。你需要分析你的SQL语句。你转义了参数吗?听起来可能是这个问题。你可以贴出你的SQL语句,这样我们可以帮助你。
为了显示错误,你可以例如:
$result = mysql_query($query) or die ("Error in query: $query. ".mysql_error());
.
你可以尝试使用LAST_INSERT_ID()函数(在PHP中为mysql_insert_id()函数)。前提是你的表必须有自增列。