2016-07-18 5 views
0

私は$ _GETを使用して[id]を取得するコードを持っていますが、idは私が呼び出しているページの番号です。未定義の変数、PHPの実行が表示されない

私は、(MySQLiからロードされた)ページのリストを持っています。私はチュートリアルに従いました。何が起こるはずです:投稿リストの投稿がクリックされると、タイトル、ラベル、本文のテキストボックスその投稿の中のコンテンツでいっぱいにしてください。これは、エラー未定義の変数を与える

<?php if(isset($_GET['id'])) 
      { 

       $q= "SELECT * FROM pages WHERE id = $_GET[id]"; 
       $r= mysqli_query($mysql, $q); 

      } 
       $opened = mysqli_fetch_assoc($r);     
    ?> 

:開かれた

は、これは私のコードです。 GitHubの上の公式MOD(私は私の仕事を基づかてるプロジェクトのmodが)私にこのコードを与えた:

<?php 
if(isset($_GET['id'])&&is_numeric($_GET['id'])){ 
    $q= "SELECT * FROM pages WHERE id = $_GET[id]"; 
    $r= mysqli_query($mysql, $q); 
    $opened = mysqli_fetch_assoc($r);  
}else{ 
    $opened = null; 
}    
?> 

をしかし、私はそれを使用するとき、私は空白のフィールドを取得し、何もいっぱいにしません。

助けてください?

+0

チュートリアル:https://www.youtube.com/watch?v=tpxO60o_D2Y – MJAzura

+0

あなたは[ 'mysqli_error']とトラブルシューティングを試してみてください(http://php.net/ manual/en/mysqli.error.php)。 – showdev

+0

'else { $ opened = null;'ピースを追加するだけです。あるいは 'if'の前に' $ opened = null; 'を追加してください。 – AbraCadaver

答えて

0

if文の中でデバッグを試しましたか?ブロック内の文が実行されているかどうかを確認するには?

これを試してみてください:

echo '<pre>'; 
print_r($_GET); // Check what you get here 

if (isset($_GET['id']) && is_numeric($_GET['id'])) { 
    $q = "SELECT * FROM pages WHERE id = ".$_GET['id']; 
    $r = mysqli_query($mysql, $q) or die(mysqli_error($q)); // Check if you get something here 
    $opened = mysqli_fetch_assoc($r); 
    echo '<pre>'; 
    print_r($opened);  // Check your fetched data 
} else { 
    $opened = null; 
    var_dump($opened);  // Check your $opened value 
}    
+0

[SQLインジェクション多く?](http://stackoverflow.com/questions/60174/how-can-i-prevent-sql-injection-in-php) – Machavity

+0

返信いただきありがとうございます。私は結果として "NULL"を取得します。 – MJAzura

+0

@Machavity:はい、そうです。論理的にどこが間違っているのかを指摘しようとしていましたが、これは最も予備的なステップです。論理が明確になると、常に技術的な賢さを強化することができます。 –

関連する問題