代码:
<?php
if (isset($_REQUEST['g'])) {
if ($_REQUEST['g'] == "Set") {
$g = strtolower($_REQUEST['g'])."_title";
}else{
$g = strtolower($_REQUEST['g']);
}
$result1 = mysql_query("SELECT LEFT($g, 1) FROM cards GROUP BY $g ORDER BY $g ASC");
while ($row = mysql_fetch_array($result1)) {
?>
<a href="./index.php?route=<?php echo $var[0]."/".$var[1]."&g=".$_REQUEST['g']; ?>&sort=<?php echo substr($row[$g], 0, 1); ?>"><?php echo substr($row[$g], 0, 1); ?></a>
<?php
}
}
?>
错误讯息:
Notice: Undefined index: set_title in E:\xampp\htdocs\zipdown\include\sort.php on line 11
我缺少什么?
答案 0 :(得分:0)
如果不知道$g
,请不要忘记转义Set
的值。
$g = mysql_real_escape_string($g);
将LEFT()
创建的列别名为$g
,并附在反引号中:
$result1 = mysql_query("SELECT LEFT(`$g`, 1) AS `$g` FROM cards GROUP BY `$g` ORDER BY `$g` ASC");
//----------------------------------------^^^^^^^
否则,mysql_fetch_array()
电话返回的列名称如下:
$row['LEFT(set_title,1)']
鉴于您的数据库必须具有一组有限的列名,建议您使用白名单来检查$g
的值:
// Assuming your columns are named title, author, etc...
if (in_array($g, array('title','author','set_title','publisher','whatever'))) {
// do the rest of your work
}
else {
// Invalid value to $_REQUEST['g']
}
答案 1 :(得分:0)
您应该为LEFT($g, 1)
指定别名,如果LEFT(set_title, 1)
为$g
,则结果中的键名称只是lkie set_title
。
答案 2 :(得分:0)
您的$g
的值为set_title
,而您的$row
在该索引处没有元素。
为了更清楚,$row['set_title']
不存在。
答案 3 :(得分:-1)
如果您要求$row['set_title']
但set_title
中没有此类密钥$row
,则PHP会发出通知,告知您无法找到任何内容。它将返回一个空值。
这是通知,而不是错误。一般来说,通知仅在PHP设置开发时出现;对于生产场所,通常会关闭通知。
如果您想沉默注意,请查看此处的文档: