我获取此代码以获取类别名称并显示此类别中的项目:
<?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>
它给了我这个错误:
注意:未定义的索引:第12行的show.php中的cat
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 靠近''第1行
我只需要显示cat_name
变量中的$cat
类似show.php?cat=6
。
答案 0 :(得分:1)
$_GET
和$_POST
不一样。在这种情况下,您尝试访问show.php?cat=6
中的 cat ,因此您应该使用$_GET['cat']
。
一般而言:
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.
答案 1 :(得分:1)
首先使用$ _GET或$ _REQUST而不是$ _POST。并确保您保护您的输入。试试这个功能:
function protect($string){
$string = urldecode($string); // url decode to make things like %20 into whitespace
$string = trim(strip_tags($string)); //remove whitespaces
$string = preg_replace("/'/", "", $string); //remove single quotes
return $string;
}
并像这样使用
$cat = protect($_REQUEST['cat']);
最后,我认为这里有一个语法。 这一行
$cat_list= "$results[cat_name]";
应该
$cat_list= $results['cat_name'];
它正在寻找一个名为cat_name的常量。数组的键总是字符串。希望有所帮助。
答案 2 :(得分:0)
这样做,
$cat = "";
if(isset($_GET['cat'])) {
$cat=$_GET['cat'];
}
答案 3 :(得分:0)
您没有获得$ cat值,将其更改为$_GET
;
要确保您的查询不会像以后那样破坏,广告'
也会ids:
SELECT * FROM products ,prod_cat ,categories WHERE categories.id=prod_cat.cat_id AND products.id=prod_cat.prod_id AND categories.id='$cat'
答案 4 :(得分:0)
show.php?cat=6
您网址中的表示您使用的是GET
变量。使用
$_GET['cat']
此外:
mysql*
函数的PHP手册页上的通知:不推荐使用它们,不应使用它们。使用PDO或MySQLi