表单提交PHP Undefined index错误
<formmethod="get"action="add.php">name:<inputtype="text"name="name"><br/>age:<inputty...
<form method="get" action="add.php">
name:<input type="text" name="name"><br/>
age:<input type="text" name="age"><br/>
job:<input type="text" name="job"><br/>
<input type="submit" name="submit" value="Submit">
</form>
<?php
$conn=@mysql_connect("localhost","root","") or die("链接错误");
mysql_select_db("test",$conn);
mysql_query("set names 'gbk'");
$sql="INSERT INTO test1 (id,name,age,job,date) values ('','$_GET[name]','$_GET[age]','$_GET[job]',now())";
mysql_query("$sql",$conn);
?>
错误信息:
Notice: Undefined index: name in ..................../add.php on line 11
Notice: Undefined index: age in ......................../add.php on line 11
Notice: Undefined index: job in ........................./add.php on line 11 展开
name:<input type="text" name="name"><br/>
age:<input type="text" name="age"><br/>
job:<input type="text" name="job"><br/>
<input type="submit" name="submit" value="Submit">
</form>
<?php
$conn=@mysql_connect("localhost","root","") or die("链接错误");
mysql_select_db("test",$conn);
mysql_query("set names 'gbk'");
$sql="INSERT INTO test1 (id,name,age,job,date) values ('','$_GET[name]','$_GET[age]','$_GET[job]',now())";
mysql_query("$sql",$conn);
?>
错误信息:
Notice: Undefined index: name in ..................../add.php on line 11
Notice: Undefined index: age in ......................../add.php on line 11
Notice: Undefined index: job in ........................./add.php on line 11 展开
推荐于2017-10-14 · 知道合伙人互联网行家
关注
展开全部
这个报错不是什么大问题,只是不良习惯造成的提示。关联数组应该使用如$_GET["name"]或者$_GET['name']这样的表示方法,虽然php会在无法找到$_GET[name]时会自动将其识别为$_GET中下标为“name”的数组元素,但是会提示你上面的Notice信息。因此,正确的做法是为关联数组加上单引或双引号。
下面是摘自PHP中文手册的解释:
为什么 $foo[bar] 错了?
应该始终在用字符串表示的数组索引上加上引号。例如用 $foo['bar'] 而不是 $foo[bar]。但是为什么 $foo[bar] 错了呢?可能在老的脚本中见过如下语法:
<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>
这样是错的,但可以正常运行。那么为什么错了呢?原因是此代码中有一个未定义的常量(bar)而不是字符串('bar'-注意引号),而
PHP 可能会在以后定义此常量,不幸的是你的代码中有同样的名字。它能运行,是因为 PHP 自动将裸字符串(没有引号的字符串且不对应于任何已知符号)转换成一个其值为该裸字符串的正常字符串。例如,如果没有常量定义为 bar,PHP 将把它替代为 'bar' 并使用之。
下面是摘自PHP中文手册的解释:
为什么 $foo[bar] 错了?
应该始终在用字符串表示的数组索引上加上引号。例如用 $foo['bar'] 而不是 $foo[bar]。但是为什么 $foo[bar] 错了呢?可能在老的脚本中见过如下语法:
<?php
$foo[bar] = 'enemy';
echo $foo[bar];
// etc
?>
这样是错的,但可以正常运行。那么为什么错了呢?原因是此代码中有一个未定义的常量(bar)而不是字符串('bar'-注意引号),而
PHP 可能会在以后定义此常量,不幸的是你的代码中有同样的名字。它能运行,是因为 PHP 自动将裸字符串(没有引号的字符串且不对应于任何已知符号)转换成一个其值为该裸字符串的正常字符串。例如,如果没有常量定义为 bar,PHP 将把它替代为 'bar' 并使用之。
追问
恩,谢谢。
但是我在这个页里加上了“” 提示:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
追答
你的本来就是双引号字符,因此这里再加双引号就会冲突了,给新加的双引号加上转义,也就是$_GET[\"name\"]
2012-10-19
展开全部
你是想在单引号里面解析变量吗?字符串的连接居然用逗号?关联数组居然又不加引号。你不用学PHP了!
追问
面对你这样的人渣,我无话可说。
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
<form method="get" action="add.php">
name:<input type="text" name="name" id="name"><br/> //虽然没什么用,建议你把id属性加上
age:<input type="text" name="age" id="age"><br/>
job:<input type="text" name="job" id="job"><br/>
<input type="submit" name="submit" value="Submit">
</form>
<?php
$name=$_GET['name'];//这里最好这样写,没事儿还可以echo 一下看看接没接收到传的值
$age=$_GET['age'];
$job=$_GET['job'];
$conn=@mysql_connect("localhost","root","") or die("链接错误");
mysql_select_db("test",$conn);
mysql_query("set names 'gbk'");
$sql="INSERT INTO test1 (id,name,age,job,date) values ('null','$_GET['name']','$_GET['age']','$_GET['job']','now()')";//看清楚这里我是怎么写的,不好好写小心插入不进去
mysql_query("$sql",$conn);
?>
name:<input type="text" name="name" id="name"><br/> //虽然没什么用,建议你把id属性加上
age:<input type="text" name="age" id="age"><br/>
job:<input type="text" name="job" id="job"><br/>
<input type="submit" name="submit" value="Submit">
</form>
<?php
$name=$_GET['name'];//这里最好这样写,没事儿还可以echo 一下看看接没接收到传的值
$age=$_GET['age'];
$job=$_GET['job'];
$conn=@mysql_connect("localhost","root","") or die("链接错误");
mysql_select_db("test",$conn);
mysql_query("set names 'gbk'");
$sql="INSERT INTO test1 (id,name,age,job,date) values ('null','$_GET['name']','$_GET['age']','$_GET['job']','now()')";//看清楚这里我是怎么写的,不好好写小心插入不进去
mysql_query("$sql",$conn);
?>
追问
受教了。但是那个ID属性不是css属性吗?
追答
没关系的,你不要管它是什么属性,先写上肯定不会有问题
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
展开全部
你把你的代码发一下啊~~~不然怎么知道
更多追问追答
追问
你回答太快了,我正在发。。。现在发上来了。
追答
这个这样写~~sname=isset($_get["name"])?$_get[name]:''
因为页面第一次加进去的时候是没有GET事件的,所以先给空字符
sname=isset($_GET["name"])?$_GETt["name"]:'';
那个最后面的''是两个单引号,这个你应该懂的,给分把
已赞过
已踩过<
评论
收起
你对这个回答的评价是?
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询