我写了一个简单的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
索引。如果您打算将这些值打印到标记中,请记住确保它们不是空的。