• mysql更新返回值问题(更新内容跟之前内容一样,返回0)


    mysql更新返回值问题 

    问:

    有一界面要更新个人信息,有几十个text标签需要填写
    假设有一用户从用户列表点修改进入了修改页面,但又没有修改什么,马上点击保存
    这时,因为text标签非常多,不能够一一判断用户是否修改了什么,就直接将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 的返回值意味着查询是合法的并能够被服务器执行。这并不说明任何有关影响到的或返回的行数。 很有可能一条查询执行成功了但并未影响到或并未返回任何行。

    原文地址:http://www.dewen.net.cn/q/1887

  • 相关阅读:
    Newtonsoft.Json(Json.Net)学习笔记
    SQL Server 自动化运维系列
    WCF 动态调用(动态创建实例接口)
    SQL Server 自动化运维系列
    SQL Server 表水平分区
    WCF服务全局异常处理机制
    WCF 透明代理
    WCF扩展记录服务调用时间
    WCF身份验证三:自定义身份验证之<MessageHeader>
    用单链表实现算法2.1
  • 原文地址:https://www.cnblogs.com/skysowe/p/6482632.html
Copyright © 2020-2023  润新知