Php 未定义的索引:提交,但其工作参数已设置但失败

Php 未定义的索引:提交,但其工作参数已设置但失败,php,indexing,submit,undefined,isset,Php,Indexing,Submit,Undefined,Isset,我犯了这个错误,有人能帮我吗 Notice: Undefined index: submit in D:\xampp\htdocs\testsubject\cntcinfo.php on line 7 这是我的代码: if($_POST['submit']=='Update') { mysqli_query($link," UPDATE usr_profile SET phone='".$_POST['phone']."',

我犯了这个错误,有人能帮我吗

Notice: Undefined index: submit in
D:\xampp\htdocs\testsubject\cntcinfo.php on line 7
这是我的代码:

if($_POST['submit']=='Update')
{
mysqli_query($link,"    UPDATE usr_profile
                    SET phone='".$_POST['phone']."',
                        email='".$_POST['emails']."',
                        address='".$_POST['address']."',
                        postcode='".$_POST['postcode']."',
                        city='".$_POST['city']."';  
                    ");
header('Location: '.$_SERVER['HTTP_REFERER']);
exit;
}
我尝试使用
isset
,但却出现了以下错误:

Fatal error: Cannot use isset() on the result of an expression (you
can use "null !== expression" instead) in
D:\xampp\htdocs\testsubject\cntcinfo.php on line 7
这是我的isset

if(isset($_POST['submit']=='Update'))

isset
不用于比较。你可以把它当作

if(isset($_POST['submit']) && $_POST['submit']=='Update')
{

}
Ans确保您提交的类型为

<input type="submit" name="submit" value="Update"/>
选中此复选框使用此复选框

if(isset($_POST['submit']) && $_POST['submit']=='Update')) {
// Your code here
}

如果要检查是否设置了POST值,则需要使用以下代码:

if(isset($_POST['submit'])) { 
    if($_POST['submit'] == 'Update') {
        //Do work here
    }
}
(或缩短时间):

isset()
函数中调用
$\u POST['submit']=='Update'
时,要求它检查是否设置了表达式的结果(它无法处理)。 所以你需要像我上面展示的那样嵌套它


如果您发现您得到了一个未定义的索引,请确保您所发布的表单已提交为其表单元素之一。

并非所有浏览器都发送提交按钮的值,如果表单也可用于添加用户,请考虑使用复选框来标记是否为用户配置文件的更新。

有了这些代码,您就成了SQL注入攻击的温床,您应该使用预先准备好的语句来消除SQL注入攻击的风险,您还应该检查MySQL是否为查询返回任何错误


所有用户提交的数据都需要验证,无论您多么了解/信任您的用户。

修改用于发布的按钮,并为其命名为“提交”。我只是想对此发表评论。。从来没有。。。永远不要将未扫描的用户数据(或任何数据)放入数据库。始终清理您的输入!或者更好的是,使用事先准备好的语句。这有SQL注入、数据丢失和大量的眼泪。我将对此进行研究。谢谢。正如CynePhoba12所回答的,这是使用isset的正确方法。在代码中,您正在检查isset以获得表达式的结果。此外,正如@Magnus Eriksson所说,永远不要在SQL或任何其他代码中直接使用用户输入。使用前一定要消毒。为什么不合并,2个if语句?是的,我刚刚添加了它。有时我更喜欢将它们分开,因为这样会有一个完整的代码块,其中显示的代码只有在设置了值的情况下才会执行(因此,如果未设置或未设置,则可以显示错误)。取决于你的应用程序的工作方式,它给了你移动的空间,但在某些情况下也可以提高可读性。它对我很有用。我尝试过升级u,但似乎我需要15个声誉才能升级。你可以单击“写入”按钮
if(isset($_POST['submit'])) { 
    if($_POST['submit'] == 'Update') {
        //Do work here
    }
}
if(isset($_POST['submit']) && ($_POST['submit'] == 'Update')) {
    //Do work here
}