[英]PHP / MySQL: query is executed properly, affected_rows returns -1
我正在嘗試從表中刪除一行,並檢查它是否有效/是否找到並刪除了一行。 我使用以下查詢來執行此操作: DELETE FROM TableName WHERE val1=1 AND val2=2 AND val3=3
。 我使用准備和執行函數通過連接$conn
發送該代碼,它工作得很好。 正在查找並刪除我要查找的行。 但是如果我想檢查它是否使用$conn->affected_rows
它返回 -1,這意味着發生了錯誤。 我不明白錯誤可能在哪里,即使查詢已正確執行, affected_rows
返回 -1...
如果您不明白該問題,請隨時在評論中提問。
代碼:
$query = "DELETE FROM ComTasks WHERE comid=? AND obj=? AND type=0";
$response = paramQuery($conn, $query, array($communityid, $userid), "ss");
echo $conn->affected_rows; //=> -1
function paramQuery($conn, $query, $params, $str){
if(!is_array($params)) $params = array($params);
$stmt = $conn->prepare($query);
if($stmt === false) return -1;
for($i=0; $i<count($params); $i++){
$params[$i] = &$params[$i];
}
array_unshift($params, $str);
call_user_func_array(array($stmt, 'bind_param'), $params);
$stmt->execute();
$result = $stmt->get_result();
$stmt->close();
return $result;
}
由於您使用的是准備好的語句和 $stmt,也應該從 $stmt 調用受影響的行:
$stmt->affected_rows;
但是,由於您將其包裝在一個函數中,並執行了 $stmt-close(),因此在函數調用之外這將不起作用。 您可能需要調整您的函數以在關閉之前和函數返回之前存儲該值。
有關 php 手冊的更多信息: http : //php.net/manual/en/mysqli-stmt.affected-rows.php
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.