表单提交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
展开
 我来答
Zjmainstay
推荐于2017-10-14 · 知道合伙人互联网行家
Zjmainstay
知道合伙人互联网行家
采纳数:580 获赞数:1129
http://www.zjmainstay.cn

向TA提问 私信TA
展开全部
这个报错不是什么大问题,只是不良习惯造成的提示。关联数组应该使用如$_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' 并使用之。
追问
恩,谢谢。
但是我在这个页里加上了“” 提示:
Parse error: syntax error, unexpected T_CONSTANT_ENCAPSED_STRING
追答
你的本来就是双引号字符,因此这里再加双引号就会冲突了,给新加的双引号加上转义,也就是$_GET[\"name\"]
匿名用户
2012-10-19
展开全部
你是想在单引号里面解析变量吗?字符串的连接居然用逗号?关联数组居然又不加引号。你不用学PHP了!
追问
面对你这样的人渣,我无话可说。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
魔术世界中文版
2012-10-19 · TA获得超过441个赞
知道小有建树答主
回答量:271
采纳率:50%
帮助的人:194万
展开全部
<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);
?>
追问
受教了。但是那个ID属性不是css属性吗?
追答
没关系的,你不要管它是什么属性,先写上肯定不会有问题
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
alijanxirkanc8b7ab
2012-10-19
知道答主
回答量:49
采纳率:0%
帮助的人:7.6万
展开全部
你把你的代码发一下啊~~~不然怎么知道
更多追问追答
追问
你回答太快了,我正在发。。。现在发上来了。
追答
这个这样写~~sname=isset($_get["name"])?$_get[name]:''
因为页面第一次加进去的时候是没有GET事件的,所以先给空字符

sname=isset($_GET["name"])?$_GETt["name"]:'';
那个最后面的''是两个单引号,这个你应该懂的,给分把
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 1条折叠回答
收起 更多回答(2)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式