【问题标题】:PHP mysql_query update always return truePHP mysql_query 更新总是返回 true
【发布时间】:2013-11-26 23:38:59
【问题描述】:

$result 始终返回 true,即使没有传递给 SQL 查询的参数。

其他都很好,我已经在数据库中测试过了。

<?php
     require('dbConnection.php');
    $lon   = $_POST['lon'];
    $lat   = $_POST['lat'];
    $time  = $_POST['time'];
    $date = $_POST['date'];
    $eTime = $_POST['eTime'];
    $eDate = $date;
    $orderID = $_POST['orderID'];


    if($db_found){

        $query = "UPDATE `PostmanLocation` 
        SET `longitude`= '$lon',`latitude`= '$lat',`time`= '$time', `date`='$date'
        WHERE `postID`= '$name'";

        $result=0;

        $result = mysql_query($query) or die("MySQL error:".mysql_error());
        echo $result;
        if($result==1){

                $query = "
                UPDATE `Order` 
                SET `eTime`= '$eTime',`eDate`= '$eDate' 
                WHERE `orderID` = 'orderID'";

                 $result=0;
                $result = mysql_query($query);
                echo $result;
                if($result == 1){
                    $response["success"] = 1;

                } else{  
                    $response["success"] =0;   
                }

        }else{
            $response["success"] = 0;
        }
        echo json_encode($response);
     }
    ?>

【问题讨论】:

  • 如果您的意思是查询中的某些变量不存在这没什么大不了的,空白字符串将被发送到数据库,因此不会出现错误。您应该使用isset() 或类似的东西来测试数据是否存在。
  • 如果向数据库发送空白字符串,表格日期是否会更新为空白?
  • 应该是这样。传递的空白字符串将覆盖那些行/列中已经存在的内容。
  • 我认为如果输入变量没有数据,更新会失败。或者如果连空字符串都可以更新,我怎么知道更新是否成功?
  • 我的数据库中没有用空白字符串输入覆盖。

标签: php mysql return-value


【解决方案1】:
$result = mysql_query($query) or die("MySQL error:".mysql_error());

在上面的指令中,$result 永远不会是 false:mysql_query 要么返回 true,要么脚本死掉。

如果你想检查你的 UPDATE 查询是否有任何影响,你可以使用这个:

使用 mysql_affected_rows() 找出有多少行受到影响 DELETE、INSERT、REPLACE 或 UPDATE 语句。

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

另请注意,不推荐使用 mysql_ 函数。您应该切换到 PDO 或 mysqli。

【讨论】:

  • 好电话,trigger_error() 如果不受欢迎,可以使用。
  • @Matthew,Jasper,谢谢你们。但是在我删除"or die("MySQL error:".mysql_error())"之后,$result 仍然是真的。
  • @user2965590 好吧,mysql_query 出错时返回 FALSE,你的查询有什么错误吗?
  • @Matthew,查询没有返回错误。那么我应该怎么做才能决定何时更新失败呢?
  • @user2965590 我更新了我的答案,看看。您可以使用 mysql_affected_rows() 查看 UPDATE 是否实际更新了任何内容。这能回答你的问题吗?
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2013-08-06
  • 2017-05-10
  • 2013-06-12
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多