PHP抛出未定义的索引警告,但脚本正常工作


php throwing undefined index warning but the script works as intended?

我写了一个简单的php脚本,基本上响应了在页面上输入表单的值,后来,我将把这个写到DB,但在我这样做之前,我一直在努力解决这个问题,因为我一直得到这个警告。

有人知道我为什么得到它吗?如果我只是填写字段并提交表单,脚本工作正常,警告消失。

PHP功能:

function quickEntry()
{
    $subTitle = $_POST['subTitle'];
    $subDetails = $_POST['details']; //This is line 13 in my code
    echo "$subTitle";
    echo "<br>$subDetails";
}
HTML/PHP代码:
<form method="post" action="">
    <hr>
    <h1>Quick Entry:<p></h1>
    Subject Title:<br> <input type="text" name="subTitle"><br><br>
    Subject Details: <p><textarea name="details" placeholder="Enter Details here..."></textarea><p><br>
    <input type="submit" name="QuickEntrySubmit" value="Submit Quick Entry" /><br>
</form>
<?php
if (isset($_POST['QuickEntrySubmit']))
{
    quickEntry();
}
?>

我知道我可以禁用警告,我不会看到这个,但我真的只是想知道为什么php抛出警告,这样我就可以适当地修复语法,保持我的代码干净。完整的警告是:

注意:未定义的索引:详细信息在C:'xampp'htdocs'test1.php第13行

谢谢!

你得到这个错误的原因是因为你没有检查'subTitle'和'details'输入是否有值。您的代码应该像这样运行良好:

function quickEntry(){
  $subTitle = isset($_POST['subTitle'])? $_POST['subTitle']: null;
  $subDetails = isset($_POST['details'])? $_POST['details']: null ; //This is line 13 in my code
  if(!is_null($subTitle) && !is_null($subDetails)){
    echo "$subTitle";
    echo "<br>$subDetails";
  } else{
  //blah blah blah
  }

你会得到警告,因为$_POST变量与你正在检查的索引($_POST['subTitle'] &$_POST['details'])没有设置,所以变量是空的,因为你引用的东西不存在

在尝试将它们赋值给变量之前,您应该先检查以确保它们已设置:

$subTitle = (isset($_POST['subTitle']) && !empty($_POST['subTitle'])) ? $_POST['subTitle'] : null;
$subDetails = (isset($_POST['details']) && !empty($_POST['details'])) ? $_POST['details'] :  null;

上面的代码将检查确保post索引isset(),而不是empty(),然后将其分配给变量。


注意

这些变量是在提交表单时设置的,因为您实际上是在向脚本提交数据。

你看到input属性name了吗?当您提交表单时,它们是相关的$_POST索引。如果您打算将这些值打印到标记中,请记住确保它们不是空的。