2012-03-22 19 views
0

私のクエリの結果を表示しようとしていますが、PHPの出力が得られません。私はいくつかの異なるループを試しましたが、私はそのページに何も表示できません。クエリはPHPmyadminで機能し、Webページがいつロードされるかを示すエラーはありません。これがコードです。これ以上の情報が必要な場合はお知らせください。私はprint_r($ data)を実行し、この結果を得ました:PHP配列がmysqliクエリからデータを取得していませんが、PHPmyadminでクエリが機能します

mysqli_resultオブジェクトの[current_field] => 0 [field_count] => 8 [lengths] => [num_rows] => 2 [type] => 0)2

$select = "SELECT u.`info_id`, u.`info`, u.`removed`, m.`date_added`, m.`title`, m.`summary`, m.`poster`, m.`imdb`, m.`cv` ". 
      "FROM `user_movies` AS u ". 
      "INNER JOIN `movies` AS m ". 
      "USING (`movie_id`) ". 
      "WHERE u.`user_id` = '{$_SESSION['user_id']}' ". 
      "AND u.`info` = '0' AND u.`removed` = '0' ". 
      "ORDER BY m.`date_added` DESC, m.`movie_id` ASC"; 
$data = mysqli_query($connect, $select) or die ('error getting user movies'); 
$movies = array(); 
while ($movie = mysqli_fetch_array($data)); 
    {  
    array_push($movies, $movie); 
    } 

foreach ($movies as $movie) 
    { 
    $id = str_replace(' ', '', $movie['title']); 
    $poster = $movie['poster']; 
    $title = $movie['title']; 
    $summary = $movie['summary']; 
    $imdb = $movie['imdb']; 

    echo "<div class='movie' id='$id'><img src='$poster' alt='$title' />" . 
    "<p><strong>$title</strong><br/>$summary<br/>" . 
    "<a href='$imdb'title='www.imdb.com'>More info at IMDb</a></p></div>"; 
    } 
+0

あなたはすべてのエラーを得ていることでしょうか? –

+1

$ connectは定義されていますか?接続しているユーザーに、クエリを実行するための適切な権限があることを確認します。 mysqlエラーとは何ですか? – CBusBus

+0

クエリをエコーし​​ましたか? '$ _SESSION ['user_id']'が正しく設定されていますか? – jeroen

答えて

0

whileループは、その仕事をしてからarray_pushを停止することの終わりにセミコロンを持っていた

while ($movie = mysqli_fetch_array($data)); 

がちょうど

while ($movie = mysqli_fetch_array($data)) 
0

私は同様の問題がありました。私はあなたの接続が動作していることと、データベースにアクセスできることをすでに確認していると推測しています。さらに、SELECTステートメントを印刷してPHPMyAdminに貼り付けたと仮定します。私は同じことをして、数時間夢中になった。

PHPMyAdminは実際に実行する前に再フォーマットします。特に、phpMyAdminは、フィールド名やテーブル名のまわりにバッククォート( "` "、後方の一重引用符)を入れます。これは、バックティックの間にあるものがテーブルのフィールドの名前であることを指定するためです。これは、予約語をフィールド名として使用する場合に特に重要です。たとえば、「select」または「order」という名前のフィールドがある場合、バックティックが必要です。この特定の例では、私は "日付"と呼ばれる分野を疑う。フィールド名の前後にバックティックを入れ、何が起こるかを見てください。

テストとして、そのフィールドをクエリから削除してみます。今後は、「日付」という名前のフィールドは使用しません。 "create_date"や "rental_date"のようなものを使う方が良いでしょう。

Good Luck。スタイルの面で、私は

  "WHERE u.user_id = '{$_SESSION['user_id']}' ". 

を好むものの

+0

あなたの答えをありがとう。はい、私はPHPmyadminにselect文を入れて、正しい行を得ました。フィールド名をdate_addedに変更しましたが、何も変更されませんでした。 – Stewart

+0

すべてのテーブル名とフィールド名にバックティックを入れてみましたか? –

+0

私はしようとしましたが、全く動作しませんでした。これは私がやったことです "SELECT' u.info_id'、 'u.info'、' u.removed'、 'm.title'、' m.summary'、 'm.poster'、' m.imdb'、 'm.cv'です。 \t \t \t \t "FROM' user_movies' AS u "です。 \t \t \t \t "INNER JOIN" movies' AS m " \t \t \t \t "USING(' movie_id') "です。 \t \t \t \t "WHERE' u.user_id' = '17' "です。 \t \t \t \t "AND' u.info' = '0' AND 'u.removed' = '0'"です。 \t \t \t \t "ORDER BY' m.movi​​e_id' ASC " – Stewart

0

SQLはOKらしい私の即時のQはありません、クエリはゼロ行を返す場合、正しくために設定$ _SESSION [「user_idは」]です。

+0

はい$ _SESSIONは大丈夫です。私はidを直接クエリに入れようとしても、私はphpadminにクエリを入れて、必要な情報を取得しました。私はちょうど空白で情報があったと思われる1つの潜水を示すページを読み込むときに私のブラウザでエラーを取得しないでください – Stewart

関連する問題