zoukankan      html  css  js  c++  java
  • 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

  • 相关阅读:
    使用 logger 在脚本中输出多个日志
    MySQL 5.7 安装完成后,立即要调整的性能选项
    多线程练习2_龟兔赛跑
    多线程练习1_网图下载
    【BFS(预处理)+SPFA】【NOIP2013】华容道
    【数学】【NOIP2013】解方程
    【二分答案+倍增】【NOIP2015】运输计划
    std::strncpy 简介
    text 文本去重行
    关于string::copy()的比较详细的示例
  • 原文地址:https://www.cnblogs.com/skysowe/p/6482632.html
Copyright © 2011-2022 走看看