2015-09-28 74 views
0

我試圖讓我的網站上的用戶數與某個公司相關,但是我的查詢出了問題。我一直得到「沒有結果」或陣列的結果:php mysql count列

$coresults = mysql_query("SELECT COUNT(user_id) FROM ".DB_USERS." WHERE user_company=".$jdata['job_company'].""); 
$count = mysql_fetch_array($coresults); 

我也試圖與PDO沒有成功

$nRows = $pdo->query('select count(*) from blah')->fetchColumn(); 
echo $nRows; 
+1

如果可以,你應該[停止使用'mysql_ *'函數](http://stackoverflow.com/questions/12859942/why-shouldnt-i-use-mysql-functions-in-php)。 [這些擴展](http://php.net/manual/en/migration70.removed-exts-sapis.php)已在PHP 7中刪除。瞭解[編寫]​​(http://en.wikipedia.org/ wiki/Prepared_statement)語句[PDO](http://php.net/manual/en/pdo.prepared-statements.php)和[MySQLi](http://php.net/manual/en/mysqli.quickstart .prepared-statements.php)並考慮使用PDO,[它確實不難](http://jayblanchard.net/demystifying_php_pdo.html)。 –

+1

[您的腳本存在SQL注入攻擊的風險。](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) –

+2

您是否試過'var_dump($ nRows);'/'var_dump($ count);'看看你實際得到了什麼?你有沒有檢查你的錯誤日誌?你有任何異常處理? etc等 –

回答

0

mysql_fetch_array返回你執行查詢的一個陣列。使用mysql_num_rows代替:

$coresults = mysql_query("SELECT user_id FROM ".DB_USERS." WHERE user_company=".$jdata['job_company'].""); 
$count = mysql_num_rows($coresults); 
+0

除非'user_company'是一個INT,否則這可能是錯誤的,當他們想要的只是一個'COUNT'時,這似乎是不必要的開銷。它並沒有真正回答這個問題。 –

+0

感謝@Jon的更正。我以爲用戶正在計數mysql_fetch_array函數的幫助 – Gautam

+0

謝謝,但我仍然得到數組的結果。 user_company是一個INT btw對不起,以上沒有說清楚。我確實嘗試了mysql_fetch_array以及mysql_num_rows以及mysql_result –

0

您可以通過給一個名字到您的計數字段,並使用mysql_fetch_assoc功能解決這個問題:

$coresults = mysql_query("SELECT COUNT(user_id) AS usercount FROM ".DB_USERS." WHERE user_company=".$jdata['job_company'].""); 
$count = mysql_fetch_assoc($coresults); 

然後,您可以訪問該領域是這樣的:

print ($count['usercount']); 

mysql_fetch_assoc函數將選定的字段轉換爲數組鍵,然後您可以像訪問一個簡單的數組一樣訪問它們。

+0

我以前嘗試過這種方式,沒有運氣我再次嘗試了您的示例,並且我將數組作爲結果返回。 –

+0

如果執行var_dump($ count ['usercount'])會出現什麼問題?它可能會顯示你想要的值。如果它返回一個數組,那麼結果可能會出現在第一個單元格中。嘗試一下並告訴我們你得到了什麼。 – Fabiano

+0

如果3個用戶在job_company中沒有任何價值,我會得到3行空值。當我把一個值放入一個帳戶時,我得到一個數組的返回值 –