我写了一个小功能来更新库存数量。我试图通过一个简单的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.如果我传入了无效的值或数据类型,它将返回错误但是是的。
有没有办法更好地处理来自查询的响应?谢谢
答案 0 :(得分:1)
如果查询成功(即,它是您的数据库的有效SQL),它将始终返回true。当您运行UPDATE
查询时,应使用mysqli_affected_rows($db)
查看已更改的行数 - 答案为0表示没有任何操作,因此您的查询无法按预期工作。< / p>
答案 1 :(得分:1)
如何将mysqli_error
/ mysqli_errno
与mysqli_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,没有更新。