我有两个PHP文件,index.php
和insert.php
。
index.php
-一个表单和一个发送数据的按钮insert.php
-接收表单的值,将它们插入数据库中,它就可以工作了
当我重定向到index.php
时,它会显示一条成功的消息。
我在index.php
中有这个代码来显示消息:
<?php
$mensaje=$_GET['mensaje'];
if($mensaje=="")
{
}
else
{
echo "¡Registro exitoso!";
}
?>
但当我第一次打开它时,它显示我:
Notice: Undefined index: mensaje in C:'xampp'htdocs'..'index.php on line 41
如何仅在插入后显示消息?
像这样:
$mensaje = isset($_GET['mensaje']) ? $_GET['mensaje'] : "";
这样,$mensaje就永远不会被定义。
三元运算符是这样工作的:
$mensaje = if($_GET['mensaje'] exists) then $mensaje = $_GET['mensaje'], else $mensaje = "";
这就像在做:
if(isset($_GET['mensaje'])){
$mensaje = $_GET['mensaje'];
}
else
$mensaje = "";
}
有关三元运算符的更准确信息:
http://en.wikipedia.org/wiki/%3F:
有关功能"isset"的信息:
http://php.net/manual/en/function.isset.php
发生这种情况是因为$_GET['mensaje']
不仅是空的,而且根本不存在
要解决此问题,请更换
$mensaje = $_GET['mensaje'];
通过
$mensaje = empty($_GET['mensaje'])? "": $_GET['mensaje'];
因此,如果$_GET['mensaje']
为空或未设置,则分配一个空字符串""
。
$mensaje真的是空的吗(正如if条件所暗示的那样),还是在$_GET中简单定义或未定义(正如文本描述所暗示的)?如果是后者,则您的解决方案是测试存在性,而不是内容:
<?php
if( isset($_GET['mensaje']) )
{
echo "¡Registro exitoso!";
}
else
{
}
?>
isset()是一个语言构造,而不是函数。这就是为什么它可以用来测试数组索引的存在,而不必在索引不存在时抛出"未定义索引"通知的原因。
提示(仅为完整性):
如果数组元素的值为NULL,isset()也将返回False。但这在$_GET的情况下是无关紧要的,因为它总是并且只包含字符串值。