2011-12-10 10 views
-1

また、COUNTを持つPHP SQL文で変数を使用すると、エラーが発生します。変数の代わりにリテラル番号を使用すると、正常に動作します。下のコードでは、変数をどこに設定するかを確認できます。それは "test2"、下のコードの最初の行に設定されています。SQL文の変数でMysqlのカウント問題 - php

私は間違っていますか?

//$tag_text_ipb hardcoded here for testing  
$tag_text_ipb="test2"; 

//when I replace $tag_text_ipb with the literal 'test2' in SQL below, it works fine. 
$query_total_tags = "SELECT COUNT(1) FROM core_tags WHERE tag_meta_app = 'downloads' AND tag_text = $tag_text_ipb"; 

$dlresult_total_tags = mysql_query($query_total_tags); 

//Mysql reports an error here (see below for the error text) ONLY when I use the $tag_text_ipb variable in the SQL statement. 
$tag_count= mysql_result($dlresult_total_tags,$k[COUNT(1)]); 

エラーは次のとおりです。 警告:mysql_result():3884

ライン上のeval() 'Dコード:供給の引数は/ホーム/ ipboard /管理/ ...で有効なMySQLの結果リソースではありません

$ tag_text_ipbではなくSQL文でリテラルを使用すると、このエラーは消え、すべて正常に動作します。

+0

私は馬鹿だ、SQLステートメント内の変数に '' 私が使用していた忘れていました。変数の内容が数値のときは、私はそれをやっていないのです。 –

答えて

2

SQLのタグテキストvarの前後に引用符がありません。このようにする必要があります:あなたはそれ以外の場合は、クエリは、不正な形式になり、テキスト値を引用する必要が

$query_total_tags = "SELECT COUNT(1) FROM core_tags WHERE tag_meta_app = 'downloads' AND tag_text = '".$tag_text_ipb."'"; 
2
$query_total_tags = "SELECT COUNT(1) ... AND tag_text = '$tag_text_ipb'"; 
                 ^   ^ 

。 SQLインジェクションについて読んで、生のクエリではなくバインドパラメータを使用できるかどうかを確認してください。

0

この

$query_total_tags = "SELECT COUNT(1) FROM core_tags WHERE tag_meta_app = 'downloads' AND tag_text = '$tag_text_ipb'"; 

を試すには、($のtag_text_ipb周りの単一qoutes)