簡體   English   中英

MYSQLI / PHP:num_rows不返回任何內容/為空

[英]MYSQLI / PHP: num_rows returns nothing/null

我已經讀過很多問題相同的主題,但是都沒有解決我的問題
我有以下代碼:

$connection = mysqli_connect('...');
if(mysqli_connect_errno()) {
    die('Connect Error');
}
$connection->set_charset("utf8");
$success = $connection->query("INSERT INTO hilde_entrys (Comment, Refer_ID, Account_Adress) VALUES ('".$_POST["comment"]."','".$GET["id"]."','".$userData["user_address"]."')");
$success->store_result(); //I did this as it helped some people - it didn´t help me :(
$rows = $success->num_rows;
while($row = $success->fetch_row()) { //This whole while-loop helped some other guy on stackoverflow - not me
    $rows = $success->num_rows; //Incrementing by 1 each time
} 
$rows = $success->num_rows; // Finally the total count 

if ($rows > 0) { //What I actually intended to do with the num_rows...
    $success->free();
    $success->close();
    $connection->close();
} else {
    $success->free();
    $success->close();
    $connection->close();
    die("Query failed.");
}

無論如何,即使我嘗試了所有可能的方法,它也不會返回任何預期的結果。 (是的,查詢和其他所有方法都起作用。我嘗試了。)。 怎么了?
謝謝您預先提供的所有答案,
VicStudio

哦,順便說一句:即使我刪除了$success->free(); 它沒有改變num_rows ...。

編輯 :你們告訴我INSERT不會返回任何行之后,我該如何檢查查詢是否成功?

一個更多的編輯 :首先,有人告訴我使用受影響的行而不是num_rows,我可以完全理解。 不知何故,它仍然不起作用,所以你們中的一個要求我在我的php腳本中激活錯誤報告,現在我得到了以下兩條錯誤消息(一條通知和一條致命錯誤):
注意:嘗試獲取第XX行(我的網頁)中非對象的屬性
致命錯誤:在第XX行(我的網頁)中的非對象上調用成員函數close()
通知指向行$rows = $success->affected_rows; (我用這個替換了$rows = $success->num_rows )。 (我評論了while循環了)。
第二個錯誤,導致屏幕變黑,是指$success->close(); ,其他條款中的一個。 這意味着
a)它無法檢測到某些更改,並且
b)我關閉查詢有問題。
有人可以向我解釋為什么嗎? 我檢查了數據庫,INSERT查詢成功,因此它應該放在if中,而不是else中。 為什么不讓我關閉查詢? 我認為這兩個錯誤都與彼此有關。 預先謝謝大家。 很抱歉,在我的新帖子之間停留了很長時間,但是花時間找出問題,尤其是寫下來。

對於插入,您應該使用受影響的$rows = $success->affected_rows; PHP受影響的_行

閱讀關於NUM_ROWS這里PHP NUM_ROWS

由於運行INSERT查詢的mysqli_query()僅返回TRUE或FALSE,因此您的$success永遠不會像SELECT查詢中那樣成為mysqli_result對象。

因此,對affected_rows的行的測試應使用這樣的連接對象。 實際上, affected_rows屬性甚至僅存在於mysqli_object上。

$connection->affected_rows;

所以

$connection = mysqli_connect('...');
if(mysqli_connect_errno()) {
    die('Connect Error');
}
$connection->set_charset("utf8");
$success = $connection->query("AN INSERT QUERY");

$rows = $connection->affected_rows;

我承認,PHP手冊在這方面還不錯, 但確實說明了這一點

這也解釋了為什么

$success->free();
$success->close();

不要工作,因為$success不是對象。

還有為什么

$success->store_result();

不起作用。 $success不是對象,沒有結果可存儲。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

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