入门客AI创业平台(我带你入门,你带我飞行)
博文笔记

mysql 返回值问题

创建时间:2017-06-21 投稿人: 浏览次数:1539

问:

在更新数据库一条记录时,字段较多无法判断用户是否修改了什么,就直接将post过来的值
去update, 但因为新值和旧值都是一样,这样mysql返回影响的行数为0
在ms sql server,oracle中,不管新值旧值是否一样,返回的影响的行数都是1的
当出现这种情况时,是不是该考虑是否出现异常,再判断修改是否成功?(之前是根据返回的值,为1,则提示修改成功,为0则提示修改失败)

  答: 判断是否执行成功不应该用返回影响的行数来判断吧?应该根据mysql_query()返回的记过判断吧?

因为mysql_query()函数如果执行成功会返回非false,如果出错了才会返回false,所以在检查返回值的时候要通过===false才是正确的。例如:

 
$result = mysql_query("update table set a="123"");
if($result === false){
or die("Invalid query: " . mysql_error());
}

 

以下是PHP手册上对mysql_query()方法返回值的解释:


返回值:
mysql_query() 仅对 SELECT,SHOW,EXPLAIN 或 DESCRIBE 语句返回一个资源标识符,如果查询执行不正确则返回 FALSE。对于其它类型的 SQL 语句,mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。非 FALSE 的返回值意味着查询是合法的并能够被服务器执行。这并不说明任何有关影响到的或返回的行数。 很有可能一条查询执行成功了但并未影响到或并未返回任何行
声明:该文观点仅代表作者本人,入门客AI创业平台信息发布平台仅提供信息存储空间服务,如有疑问请联系rumenke@qq.com。