簡體   English   中英

PHP / MySQL:查詢正確執行,受影響的行返回-1

[英]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.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM