2

PHP とプログラミングは初めてです。チュートリアルに従っていますが、製品を Web ページに表示しようとしたときに問題が発生しました。これはテスト中のコードです。

<?php 

if (isset($_GET['id'])) {

    include "storescripts/connect_to_mysql.php"; 
    $id = preg_replace('#[^0-9]#i', '', $_GET['id']); 
    $sql = mysql_query("SELECT * FROM products WHERE id='$id' LIMIT 1");
    $productCount = mysql_num_rows($sql); 
    if ($productCount > 0) {

        while($row = mysql_fetch_array($sql)){ 
             $product_name = $row["product_name"];
             $price = $row["price"];
             $details = $row["details"];
             $category = $row["category"];
             $subcategory = $row["subcategory"];
             $date_added = strftime("%b %d, %Y", strtotime($row["date_added"]));
         }

    } else {
        echo "That item does not exist.";
        exit();
    }

} else {
    echo "Data to render this page is missing.";
    exit();
}
mysql_close();
?>

ブラウザでページを表示しようとすると、「このページをレンダリングするデータがありません」というメッセージが表示されます

私はそれが関係していることを理解しています

if (isset($_GET['id'])) {

おそらくそれは「id」と関係があると思いますが、修正方法がわかりません。これが基本的なように思われる場合は申し訳ありませんが、私が言ったように、私は新しく、この問題を解決できません。私は一日中試してきました

ありがとう

4

4 に答える 4

1

明らかに、$_GET['id']設定されていません。リンクが のようなものhttp://www.example.com/index.php?id=32であれば、設定されます。

次に、サニタイズせずにクエリで GET/POST 変数を使用しないでください。

そして 3 番目に、そもそも mysql_query を使用しないでください。代わりに PDO または mysqli を使用してください。

于 2013-02-17T18:05:34.323 に答える
0

あなたのIDを追跡することを学びます。渡された正しい値のIDを送信するURLをサニタイズして確認し、最初に次のように値を確認します

                     <?php
                    echo $_GET['id'];
                      ?>

これを使用して、ID値が何であるかを確認します

于 2013-02-17T19:03:29.530 に答える
0

このコードを試すことができます:

    <?php
    if (isset($_GET['id'])){ //Someone submitted a form or just prepended parameter to link
      include "storescripts/connect_to_mysql.php"; //Include script with mysql connection
      $id = preg_replace('#[^0-9]#i', '', $_GET['id']); //Sanitize input - remove everything besides numbers
      $result = mysql_query("SELECT * FROM products WHERE id='$id' LIMIT 1"); //Execute query. Only 1 product because of LIMIT 1
      if (mysql_num_rows($result)==1){ //If the product is found
         $product = mysql_fetch_assoc($result) ; //Take the product
         foreach ($product as $property => $value){ //Go through each property of product
           echo "<div> {$property} : {$value} </div>" ;
         }
      }
    } else {?>
      <form method="get" action="<?php $_SERVER['PHP_SELF'] ; ?>">
        <input type="text" name="id" />
        <input type="submit" value="Submit product ID"/>
      </form>
<?php    
}
    ?>

ご不明な点がございましたら、お尋ねください。

于 2013-02-17T18:31:37.483 に答える
0

$_GET が表示されている場合は、URL でパラメーターを探しています。そう:

http://localhost/yourphpscript.php?id=123

……それは期待されていることです。URL で何らかの ID を定義する必要があります。

于 2013-02-17T18:08:53.120 に答える