$_GET不从URL中检索id


$_GET doesnt retrieve the id from URL

我有一个垂直菜单栏,其中有类别,这些类别下有产品。当我将鼠标悬停在类别上时看到的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());

这给我一个MYSQL错误,因为catid没有存储在$fetchedcatid中。

请帮助。谢谢。

你需要在使用前先检查catid是否设置好,使用单例也不是一个好选择

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

您也可以使用is_intctype_digit来确保id只有数字


你的代码容易受到sql注入,你需要逃避所有get, postrequest,更好的方法是使用准备好的语句

好读

    如何防止SQL注入在PHP?
  1. PDO准备语句是否足以防止SQL注入?

注意

  1. 整个 ext/mysql PHP扩展,它提供了所有以mysql_前缀命名的函数,在PHP v5.5.0中被正式弃用,并将在将来被删除。所以使用PDOMySQLi

好读

  1. mysql扩展名已弃用,将来会被删除:使用mysqli或PDO代替
  2. MySQL开发者PDO教程
  3. Pdo初学者教程

我的理解是,你有$_GET变量的问题,而不是他们是否设置(虽然所有的好点,我不认为这是OP的主要问题)。

试题:

<?php 
if(empty($_GET)) 
echo "_GET is empty"; 
else 
print_r($_GET); 
?> 

如果你没有得到任何变量,那么有一个问题与您的配置设置,也许_GET被禁用或被重新分配给一些其他的框架变量?

GET、POST和REQUEST的PHP文档

启动对$_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());
}