2013-10-31 29 views
0

我有一些PHP代碼,MySQLi在只有一行時發現兩行?

$gQ = $mysqli->query("SELECT * FROM `Inventory` WHERE `UserID`='$user[ID]' ORDER BY `ID`"); 
$gN = $gQ->num_rows; 
echo($gN); 

我的$用戶[ID]爲1,所以當我運行查詢,應該讀的存貨任何由用戶名1 資:

SELECT * FROM `Inventory` WHERE `UserID`='1' ORDER BY `ID` 

在phpMyAdmin,它返回數2.
這是爲什麼在頁面上返回1行(因爲只有1行!)

鑑於?我希望它回顯1而不是2.

+0

您是否試圖獲取記錄? –

+0

確保正在執行的查詢正是您所期望的。在執行查詢之前添加一個打印語句,即:('echo「SELECT * FROM \'Inventory \'WHERE \'UserID \'='$ user [ID]'ORDER BY \'ID \'」'') – NullUserException

+0

如果你使用'SELECT UserID FROM'等而不是'*',你會得到什麼結果? –

回答

3

MySQLi在只有一行時發現兩行?


mysqli的發現正好發現的行數。無論您的代碼和/或各種拼寫錯誤如何引起不一致和錯誤。

0

請確保您的表userID設置爲auto_increment,這將確保沒有重複的用戶標識(如果您將SQL引入2,那麼顯然會出現這種情況)如果您可以查看所有表記錄,請使用PHP MyAdmin。如果這些行都出現同樣的問題,請檢查您的數據是如何回顯的(將是重複的代碼)

+0

我認爲有多行具有相同的'UserID'是OP預期是正常的。這在查詢中被'ORDER BY'語句強烈暗示。他只是認爲這個特定的UserID應該只有一行(糾正我,如果我錯了)。 – NullUserException

+1

用戶標識不應該是auto_increment,因爲同一個人的庫存中可能有多個項目。 ID已經設置爲auto_increment。 –