php抛出未定义的索引警告,但脚本按预期工作?

时间:2014-07-21 03:03:52

标签: php

我写了一个简单的php脚本,它基本上回应了在页面上放入表单的值,稍后,我将这个写入数据库但我正在努力对其进行故障排除,因为我一直收到此警告。

  

有谁知道我为什么会这样做?如果我只是填写字段并提交表单,脚本就可以正常运行并且警告消失。

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会抛出警告所以我可以适当地修复语法并保持我的代码清洁。完全警告是:

  

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

谢谢!

2 个答案:

答案 0 :(得分:1)

您收到警告,因为$_POST变量包含您要检查的索引($_POST['subTitle']&amp; $_POST['details']),因此变量无法设置当您引用不是的内容时,它们是空的。

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

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

上面的代码会检查以确保帖子索引isset()并且在将其分配给变量之前不是empty()


注意

当您提交表单时设置变量,因为您实际上是将数据发布到脚本中。

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

答案 1 :(得分:1)

您收到该错误的原因是您没有检查&#39; subTitle&#39;和&#39;细节&#39;输入中包含值。 你的代码应该像这样工作:

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
  }