从php mysql查询中获取结果

时间:2015-12-16 15:48:51

标签: php mysql

我写了一个小功能来更新库存数量。我试图通过一个简单的echo语句返回查询是否成功,但我感到困惑,因为无论查询是否成功,我都会得到相同的结果。 / p>

这是我的功能:

     public function updateItemQuantity($id, $quantityOnHand){
            $db = new db_conn_warehouse();
            $db = $db->connect();

            //Check for empty parameters
            if (!empty($id) && !empty($quantityOnHand)) {

                 //build query for parameters
                $query = "UPDATE inventory SET quantityOnHand = " . $quantityOnHand . " WHERE id = " . $id;

                $result = mysqli_query($db, $query ) or die(mysqli_error($db));

                if ($result) {
                    echo $result;  #returns 1 no matter what
                }
                $db->close();

            }
         }

无论查询结果如何,我都会在浏览器中回显1号。我很擅长连接到数据库并使用php和mysql运行查询,我只是不确定当我得到它们时如何以及如何处理结果。如果查询成功,则行echo $result;将返回1。即使它不能更新该行(例如,如果我传递了一个不存在的id,它也会返回1.如果我传入了无效的值或数据类型,它将返回错误但是是的。

有没有办法更好地处理来自查询的响应?谢谢

3 个答案:

答案 0 :(得分:1)

如果查询成功(即,它是您的数据库的有效SQL),它将始终返回true。当您运行UPDATE查询时,应使用mysqli_affected_rows($db)查看已更改的行数 - 答案为0表示没有任何操作,因此您的查询无法按预期工作。< / p>

Here's the relevant PHP documentation.

答案 1 :(得分:1)

如何将mysqli_error / mysqli_errnomysqli_affected_rows结合使用呢?这样你就可以看到是否有错误并获得错误信息和代码。

答案 2 :(得分:0)

对于SELECT语句,您可以通过检查是否存在使用mysqli_num_row提取的任何行来检查查询是否成功:

$myArr;
if(mysqli_num_rows($result) > 0){
    /*do things.. e.g.: extract data from all rows*/
    while($row = mysqli_fetch_assoc($result)){
        foreach($row as $key=>$value){
            $myArr[$key] = $value;
        }
    }
}

对于UPDATE语句,您可以通过mysqli_affected_rows($dbconnection)进行检查。

如果受影响的行数量< 1,没有更新。