2010-11-24 8 views
1

私はデータベースの中に、日付の列が1つ(Y-m-dという形式の列に '日付'という列)含まれているテーブルを持っています。'mysql_fetch_array()の引数が有効なMySQL結果リソースではありません'

私は今月中に記録されたデータのすべての行を抽出したいので、私は次のクエリを使用しています:

$year_month = date("Y-m"); 
$query = "SELECT date FROM tracker WHERE date LIKE '$year_month%'"; 

私は視覚的に出力することへのクエリとの試みを実行すると、I "Warning:mysql_fetch_array():指定された引数がMySQLの64行目の有効な結果リソースではありません"というエラーが表示されます。

ライン64は、次のループの始まりである:私はグーグルを精練し、ここにも表情を持っていた

while($row = mysql_fetch_array($result, MYSQL_ASSOC) 
{ 
    echo "Name :{$row['date']} <br>"; 
} 

が、私はこの一見単純な問題を見つけ出すように見えることはできません。私の知る限り、実際のクエリは正常に実行されています。

アイデア?

**追加 - $ connは次の行を指し**

$result = mysqli_query($conn, $query); 

以下はMySQLのクエリを呼び出します。

$conn = @mysqli_connect($dbhost, $dbuser, $dbpass, $dbname) or die ('Error connecting to MySQL'); 
+1

hereため

外観は、私たちにmysql_query' 'へのコールを表示します。 –

+0

終了時に閉じ括弧が欠けている。 – shevski

+0

良い点。私は投稿して以来、しかし、エラーが解決賛成している。 –

答えて

2

2つのことが私に飛び出し:

  1. あなたはその結果と一緒に行くのは確かですか? insertdeleteなどの検索クエリには結果がありません。成功を示すブール値を返します。

  2. クエリが成功したことを確認していますか? mysql_queryと呼ばれる行の後、結果を確認してください。それが間違っている場合は、mysql_get_errorに連絡して何がうまくいかなかったかを知ることができます。

EDIT:さて、あなたの本当の問題は、あなたがmysql_*mysqli_*コマンドを混合していることです。あなたはどちらか一方を使う必要があります。

+0

SELECTクエリの結果があるはずです。また、私はクエリのエラーをチェックしており、すべて正常に動作しているようです。 –

+0

私は自分の答えを更新しました。あなたは本当にそれを読むべきです! –

+0

私はあなたが正しいと思います!それは今正しく出力されています:)私は 'mysql'と 'mysqli'についてよく知らないので、すべてのコマンドに1つのバージョンだけを適用する必要がありますか? –

2

このような何かがうまく動作するはずです...

if(!$result) 
    throw new Exception("MySQL Error: ".mysql_error()." (#".mysql_errorno().")"); 

if(mysql_num_rows($result) <= 0) 
    echo "No results found."; 
else 
    while($row = mysql_fetch_array($result, MYSQL_ASSOC)) 
    echo "Name :{$row['date']} <br>"; 

あなたがmysql_error()mysql_errorno()から取得しているエラーを理解していない場合は、出力を投稿し、我々が助けることができるはずそれ。

+0

「結果が見つかりません」と表示されます。なぜこれが分かっていないのですか? –

+0

これは、クエリに一致するデータがないことを意味します。したがって、クエリが不良であるか、データがデータベース/テーブルにロードされません。あなたのクエリを確認するには、 'mysql_query()'の前に 'var_dump($ query);'を入れてください。これは、クエリのためにMySQLに送られるものを正確に示します。 –

+0

これは次のようになります:string(51) "SELECT date from tracker WHERE date LIKE '2010-11%'" –

0

何それは日付型の場合、その後、あなたは次のことを試してみてください、日付フィールドのデータ型です:

$query = "SELECT date FROM tracker WHERE year(date)='".date("Y")." and month(date) = '".date("m")."'"; 
$year_month = date("Y-m"); 

$result = mysql_query($query); 
while($row = mysql_fetch_array($result, MYSQL_ASSOC) 
{ 
    echo "Name :{$row['date']} <br>"; 
} 
+0

残念ながら、上記と同じエラーが発生します。私は、クエリからデータを取得していないと思うが、その理由を知らないと思う。 –

+0

上記の私の答えを見て、私はそれを編集しました –

0
$query = "SELECT date FROM tracker WHERE date LIKE '$year_month%'"; 

する

$query = "SELECT `date` FROM tracker WHERE `date` LIKE '$year_month%'"; 

日は予約語であるべきですSQLで。より多くの例

関連する問題