我一直在努力修复这个问题,但这也给我带来了同样的错误:
注意:未定义索引:第9行C:\xampp\htdocs\shop.php中的项
注意:未定义的索引:第24行C:\xampp\htdocs\shop.php中的主体
这是我的代码:
<form action="" method="post">
<input type="radio" name="items" value="fed" /> Fed<br />
<input type="radio" name="items" value="body" /> Body<Br>
<input type="submit" name="submit"><br>
</form>
<?php
if(isset($_POST['submit'])) {
$items = $_POST['items'];
if($items=="fed") {
echo "You choose feds";
die();
}
else
echo "<Form action='' method='POST'>
<select name='body'>
<option value='head'>Head</option>
</select>
<input type='submit' name='submit' value='submit' /><br />
</form>";
if(isset($_POST['submit'])) {
$body = $_POST['body'];
$connect = mysql_connect("localhost","root","")or die(mysql_error());
mysql_select_db("feds",$connect)or die(mysql_error());
$merchandise = mysql_query("SELECT * FROM merchandise WHERE body_part='$body' ")or die(mysql_error());
while($row = mysql_fetch_array($merchandise)) {
echo $row['item'];
echo "<bR>";
}
}
}
?>发布于 2011-11-28 17:57:27
错误消息表明,您正在访问数组中不存在的项!
但是,通常您应该检查这些变量的存在(即使您确信表单已经发送):
$items = isset($_POST['items']) ? $_POST['items'] : outputError('...');,请修复您的SQL注入安全漏洞!!
$body = mysql_real_escape_string( $_POST['body'] );请考虑升级到MySQLi或PDO!关于这些主题,有许多很好的资源。
发布于 2011-11-28 22:34:03
--这些不是错误,它们是Notes。但是它们应该在生产环境中被修复,因为这给了您一个提示,在某些情况下,您的代码可能无法正常工作。
解决方案
根据您想要实现的具体目标,可以使用以下代码:
$items = array_key_exists('items', $_POST) ? $_POST['items'] : '';并且您可以确定您的$items变量包含一些内容(至少是空字符串)。当然,根据您的代码体系结构,您可以用false或null替换空字符串,但这取决于您。
关于使用isset()或empty()的技巧
不要使用它们来检查数组中是否存在特定的元素--使用array_key_exists()。有什么关系?
假设$my_array看起来是这样的:
$my_array = array(
'a' => 'abc',
'b' => 0,
'c' => '',
'd' => null,
);然后:
empty() on $my_array['b']、$my_array['c']和$my_array['d']将返回true,因为所有这些值都被认为是空的,而$my_array['e']上也将返回true,因为不存在的值/变量也被认为是空的,对于所有元素的isset()将返回true ( $my_array['d']除外),因为isset()将等于null的变量视为not。array_key_exists()还将返回` `false (因为变量未设置),isset($my_array['e'])将返回数组中实际上存在的每个键的true,如果没有返回false,则返回因此,如上所述,检查某个元素是否在数组中定义的更好的选项是使用array_key_exists(),因为它不会跳过“空”或null值。
附录
有指向下列文件的链接:
isset() -确定变量是否为空(空字符串,0作为整数,0.0作为浮点数,'0' -零作为字符串,null,false或空数组array()),array_key_exists()实际上检查给定的键或索引是否存在于数组中。
发布于 2011-11-28 18:01:49
未定义索引意味着您正在尝试访问不存在的数组键。您的表单可能并不像您所期望的那样发布。一个简单的:
print_r($_POST);会向你展示什么是发帖。
https://stackoverflow.com/questions/8300068
复制相似问题