我嘗試使用此查詢:如何獲取php mysql查詢中的行數?
mysql_query("SELECT COUNT(*) FROM Users WHERE (Username=" + $username + "AND Hash=" + $hash + ")")
返回的行數進行身份驗證的PHP腳本。但這不會返回一個int?我如何使用返回值來獲取行數?
我嘗試使用此查詢:如何獲取php mysql查詢中的行數?
mysql_query("SELECT COUNT(*) FROM Users WHERE (Username=" + $username + "AND Hash=" + $hash + ")")
返回的行數進行身份驗證的PHP腳本。但這不會返回一個int?我如何使用返回值來獲取行數?
您可以使用mysql_fetch_array
從結果中提取行:
$result = mysql_query("SELECT COUNT(*) FROM Users WHERE ...") or die(mysql_error());
$row = mysql_fetch_array($result);
echo $row[0];
或者因爲你只需要取一個值,你可以做到這一點更簡單地使用mysql_result
:
$result = mysql_query("SELECT COUNT(*) FROM Users WHERE ...") or die(mysql_error());
echo mysql_result($result, 0);
我d還建議您查看參數化查詢,而不是使用字符串連接來構建SQL查詢。
$row = mysql_fetch_row($your_resource);
echo (int)($row[0]);
此外,您可能會對SQL注入敞開大門。你應該學會用PDO做好準備的查詢。
您的直接問題是您正在使用+
而不是.
來連接字符串。
併爲username
和hash
值將需要他們周圍的報價,使他們不中斷查詢:
mysql_query("SELECT COUNT(*) FROM Users WHERE (Username='" . $username . "' AND Hash='" + $hash . "')")
一定要添加適當的錯誤如圖所示manual檢查您的通話mysql_query()
。
另外請確保您知道SQL injection。對所有值使用適當的衛生方法(如mysql_real_escape_string()
用於傳統的mysql庫),或切換到PDO並準備好語句。這樣做的
一個方法是:
$result = mysql_query("SELECT username FROM Users WHERE (Username='" . $username . "' AND Hash='" . $hash . "') LIMIT 1");
$returned = mysql_numrows($result);
echo $returned ." users";
但是,您可以進一步優化查詢取決於你對結果集做什麼。
看看http://php.net/manual/en/function.mysql-num-rows.php 還有http://www.php.net/manual/en/function.mysql-fetch-array.php等mysql_fetch_ *功能
此外,確保正確格式化您的查詢。查看mysql_real_escape_strings以逃避用戶輸入以避免SQL注入攻擊。