2009-08-19 7 views
1

私は以下のクエリを実行していますが、INTEGERを返すことを期待していますが、 "Resource id#3"を返す
何が間違っていますか?MySQL PHPのカウント(*)は何か変わったものを返します

$queryPlans = mysql_query("SELECT count(*) FROM infostash.rooms"); 
echo $queryPlans; 

は、実際にこの表の15行があり、私は数15 任意の提案を返したいですか?

+3

'php.net'(それは20種類のミラー)が再びダウンしているので、完全なドキュメントを読むことができませんでしたか?理解できません。 – Bombe

答えて

2

あなたが必要:

$queryPlans = mysql_query("SELECT count(*) FROM infostash.rooms"); 
$row = mysql_fetch_array($queryPlans); 
echo $row[0]; 

mysql_query()は、結果を返すされていません。ループして行を調べることができるリソースを返しています(上記のように)。

+0

ええ、完璧な仲間がありがとう! –

1

これは、実際にマニュアルに従って行動を期待されています、SELECTについて

SHOW、DESCRIBE、EXPLAINおよび結果セット、するmysql_queryを(返す他の文)が成功した場合にリソースを返し、エラー時にFALSE。

これは、1つの列で1つの行を返す通常の選択であり、そのように扱う必要があります。あなたはその結果には、mysql_fetch_arrayを呼び出すことができます。

$row = mysql_fetch_array($resource); 
$count = $row[0]; 
0

。あなたは、そのリソースから "貴重な情報"を得る別の機能が必要です。この場合、/mysql_fetch_row()/mysql_fetch_objectとして指摘されています。または(それは単一値なので)mysql_result()です。
sqlクエリは、さまざまな理由で失敗する可能性があります。 常に mysql_query()の戻り値を確認してください。偽であれば、何かが間違っていて、mysql_error()がそれについてもっと詳しく話すことができます。

$mysql = mysql_connect(...) or die(mysql_error()); 
mysql_selecT_db(.., $mysql) or die(mysql_error($mysql)); 
$query = "SELECT count(*) FROM infostash.rooms"; 
$queryPlans = mysql_query($query, $mysql) or die(mysql_error($mysql)); 
$cRows = mysql_result($queryPlans, 0); 
echo $cRows; 
3

mysql_queryはPHPリソースを返します(http://www.php.net/manual/en/language.types.resource.php参照)。

戻されたリソースは、mysql_fetch_assocなどに渡されます。

あなただけの数を取得しているので、あなたは以下を使用することができます。

$queryPlans = mysql_query("SELECT count(*) FROM infostash.rooms"); 
$count = mysql_result($queryPlans,0,0); 
echo $count; 
0

後で完全なクエリを使用して計画している場合に(例えばを選択するのではなく、カウント())、あなたがすることができます完全なクエリでmysql_num_rows()を使用してデータベースのヒットを保存します。例:

$queryPlans = mysql_query("SELECT * FROM infostash.rooms"); 
$results = mysql_fetch_array($queryPlans); 
echo "There were " . mysql_num_rows($queryPlans) . " results"; 
while($row = mysql_fetch_assoc($queryPlans)){ 
    // Do stuff here 
}