Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/html/69.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 访问$\u POST时出现未定义的索引错误_Php_Html_Forms - Fatal编程技术网

Php 访问$\u POST时出现未定义的索引错误

Php 访问$\u POST时出现未定义的索引错误,php,html,forms,Php,Html,Forms,我一直试图解决这个问题,但它给了我同样的错误: 注意:未定义索引:第9行C:\xampp\htdocs\shop.php中的项 注意:第24行C:\xampp\htdocs\shop.php中的未定义索引:body 这是我的密码: <form action="" method="post"> <input type="radio" name="items" value="fed&q

我一直试图解决这个问题,但它给了我同样的错误:

注意:未定义索引:第9行C:\xampp\htdocs\shop.php中的项

注意:第24行C:\xampp\htdocs\shop.php中的未定义索引:body

这是我的密码:

<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>";
    }
}


} 
?>

联邦储备银行
正文


错误消息表示您正在访问不存在的数组项

但一般来说,您应该检查这些变量的存在性(即使您确定表单已发送):

请修复您的SQL注入安全漏洞

$body = mysql_real_escape_string( $_POST['body'] );

请考虑升级到<强> MySqLI<强>或<强> PDO < /强>!关于这些主题,有很多很好的参考资料。

未定义索引意味着您试图访问一个不存在的数组键。您的表单可能未按预期发布。一个简单的例子:

print_r($_POST);

将向您显示正在发布的内容

我无法理解你试图做什么的逻辑。你能再解释一下吗?如果
条件关闭不正确,也可以使用第一个
。你的结构如下:

if(user submits) //true
{
if(){ do something}
else{ do something}

if(user submits) //true
{
//you call body variable, which is not defined the first time user submits the page, thus the error
}

}//original if ends

因此,请检查括号。

您应该为每个表单创建一个隐藏的输入,而不是尝试侦听提交按钮。。 并非所有版本的php都将submit按钮注册为值。
您还编写了两次“if(isset($_POST['submit'])”),这将使php返回两条if语句true。。希望这对您有所帮助

尝试将表单的回显代码更改为:-

echo "<Form action='' method='POST'>
     <select name='body' id='body'>
     <option value='head'>Head</option>
     </select>
     <input type='submit' id='submit' name='submit' value='submit' /><br />
     </form>";
echo”
头

";

请注意,我已将id添加到表单元素中,最好对表单使用设置为相同值的id和名称属性。

这些不是错误,它们是通知。但它们应该在生产环境中修复,因为这会提示您的代码在某些情况下可能无法正常工作

解决方案 根据您想要实现的具体目标,您可以使用以下代码:

$items = array_key_exists('items', $_POST) ? $_POST['items'] : '';
并且您确定
$items
变量包含某些内容(至少是空字符串)。当然,根据您的代码体系结构,您可以将空字符串替换为
false
null
,但这取决于您自己

使用
isset()或
empty()的提示
不要使用它们来检查数组-use中是否存在特定元素。有什么区别

让我们假设
$my_array
如下所示:

$my_array = array(
    'a' => 'abc',
    'b' => 0,
    'c' => '',
    'd' => null,
);
然后:

  • empty()
  • 所有元素上的
    isset()
    都将返回
    true
    ,但
    $my_数组['d']
    除外,因为
    isset()
    将等于
    null的变量视为未设置
    isset($my_array['e'])
    也将返回'false(因为未设置变量)
  • array\u key\u exists()
    将为数组中实际存在的每个键返回
    true
    ,如果不存在则返回
    false
因此,如上所述,检查数组中是否定义了某些元素的更好选择是使用
array\u key\u exists()
,因为它不会跳过“empty”或
null

附录 有指向文档的链接:

  • -确定是否设置了变量且该变量不是
    NULL
  • -确定变量是否为空(空字符串,
    0
    作为整数,
    0.0
    作为浮点,
    '0'
    -零作为字符串,
    null
    false
    或空数组
    array()
  • -实际检查数组中是否存在给定的键或索引
嘿,就用“POST”代替“POST”吧。希望它能像我一样解决你的问题


快乐编码

欢迎使用堆栈溢出。您的问题实际上并不包含问题-因此很难回答(而且可能也会被关闭)。您到底想做什么,一个多步骤的表单?应该是
print\r($\u POST)
谢谢,我都怪键盘!)@Tadeck我刚刚测试了这段代码:
$arr=array('a'=>'');回声isset($arr['a'])
并返回true。我的PHP版本:5.4.12。还是我误解了你?你是对的,我犯了一个错误(我可能在想empty()。
$my_array = array(
    'a' => 'abc',
    'b' => 0,
    'c' => '',
    'd' => null,
);