2

カテゴリを持つ垂直メニュー バーがあり、これらのカテゴリの下に製品があります。カテゴリにカーソルを合わせると表示される URL は..../index.php?catid=1

たとえば、私は持っています

category- SCHOOLS (catid=1)
products - NPS, DPS...

商品を表示するには、$ _GET を使用して、商品の上にカーソルを置いたときに URL から「catid」を取得する必要があります。

これはその部分のコードです:

$fetchedcatid = $_GET['catid'];
$resultLIst = array();
$i = 0;
$sql="Select * from product_master where id = ".$fetchedcatid;
$query=mysql_query($sql) or die(mysql_error());

catid が $fetchedcatid に格納されていないため、MYSQL エラーが発生します。

助けてください。ありがとう。

4

3 に答える 3

2

使用前に設定されていることを最初に確認する必要がありcatid、シングルトンの使用も適切なオプションではありません

if(isset($_GET['catid'])){
 // other stuff use $_GET['catid']

}

is_intorctype_digitを使用して、id が数字のみであることを確認することもできます


警告

あなたのコードはSQLインジェクションgetに対して脆弱です。すべてをエスケープする必要がありますpostrequestより良いアプローチはPreparedステートメントを使用することです

よく読んだ

  1. PHPでSQLインジェクションを防ぐには?
  2. SQL インジェクションを防ぐには、PDO 準備済みステートメントで十分ですか?

ノート

  1. ext/mysql接頭辞 mysql_ で名前が付けられたすべての関数を提供する PHP 拡張機能全体は、PHP v5.5.0 で正式に非推奨となり、将来的に削除される予定です。したがって、またはのいずれPDOかを使用しますMySQLi

よく読んだ

  1. mysql 拡張機能は非推奨であり、将来削除される予定です。代わりに mysqli または PDO を使用してください
  2. MySQL 開発者向け PDO チュートリアル
  3. 初心者向け Pdo チュートリアル
于 2013-03-17T05:21:44.347 に答える
0

私の理解では、$_GET変数が設定されているかどうかではなく、変数に問題があるということです(すべての良い点ですが、それがOPの主な問題だとは思いません)。

試す:

<?php 

if(empty($_GET)) 
echo "_GET is empty"; 
else 
print_r($_GET); 

?> 

変数を取得していない場合は、構成設定に問題があります。おそらく _GET が無効になっているか、フレームワークによって他の変数に再割り当てされていますか?

GET、POST、および REQUEST の PHP ドキュメント

于 2013-03-17T05:33:18.363 に答える
0

$_GET['catid']変数のテストを開始する

$fetchedcatid = isset($_GET['catid']) ? $_GET['catid'] : FALSE;

if($fetchedcatid) { 
  // do stuff here 
  // you will want to sanitize this variable especially when using it in a mysql_query statement
 //For Example:

$resultLIst = array();
$i          = 0;
$sql        = "Select * from product_master where id = ".mysql_real_escape_string($fetchedcatid);
$query      = mysql_query($sql) or die(mysql_error());
}
于 2013-03-17T05:22:41.507 に答える