0

カテゴリ名を取得し、このカテゴリのアイテムを表示するための次のコードを取得しました。

<?php 
// This block grabs the whole list for viewing
$cat_list="";
$cat=$_POST['cat'];
$cat_sql="SELECT * FROM products,prod_cat,categories WHERE categories.id=prod_cat.cat_id AND products.id=prod_cat.prod_id AND categories.id=$cat";
$cat_query=mysql_query($cat_sql) or die(mysql_error());
$results=mysql_fetch_assoc($cat_query);
$cat_list= "$results[cat_name]";
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>show</title>

</head>
<?php echo $cat_list; ?>

</html>

それは私にこのエラーを与えます:

Notice: 未定義のインデックス: show.php の 12 行目の cat

SQL 構文にエラーがあります。1 行目の near '' を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。

必要なのは、のような変数cat_nameからカテゴリ外を表示することだけです。$catshow.php?cat=6

4

5 に答える 5

1

$_GET$_POST同じではありません。この場合、 でcatにアクセスしようとしてshow.php?cat=6いるので、 を使用する必要があります$_GET['cat']

一般的:

  • $_GET は、クエリ文字列または URL から変数を取得します。
  • $_POST は、フォームなどの POST メソッドから変数を取得します。

PHP.net マニュアル:
$_GET - http://php.net/manual/en/reserved.variables.get.php
An associative array of variables passed to the current script via the URL parameters.

$_POST - http://php.net/manual/en/reserved.variables.post.php
An associative array of variables passed to the current script via the HTTP POST method.

于 2013-02-12T08:14:41.790 に答える
0

こうやって、

$cat = "";
if(isset($_GET['cat'])) {
    $cat=$_GET['cat'];
}
于 2013-02-12T08:13:09.000 に答える
0
  1. $cat の値を取得できませんでした$_GET

  2. 確認するために、クエリが将来そのように壊れないようにするために、ad 'to ids も:

選択する
    *
から
    製品
    ,prod_cat
    、カテゴリ
どこ
    カテゴリ.id=prod_cat.cat_id
    AND products.id=prod_cat.prod_id
    AND カテゴリ.id='$cat'
于 2013-02-12T08:13:50.347 に答える
0
show.php?cat=6

GETは、変数を使用していることを意味します。使用する

$_GET['cat']

さらに:

  1. セキュリティについて何かしてください。人々はそのGET変数に好きなものを入れることができるので、SQLに好きなものを追加できます!! これは悪いです!
  2. 関数の PHP マニュアル ページにある通知をお読みくださいmysql*。これらの関数は非推奨であり、使用しないでください。PDO または MySQLi を使用する
于 2013-02-12T08:14:09.800 に答える