我创建了数据库(my_db)和表(人),其中我使用了FirstName,LastName和Age三个字段。 我在php脚本下运行它显示错误:
(!)注意:未定义的索引:第5行的C:\ wamp \ www \ insert.php中的FirstName 调用堆栈
1 0.0007 369800 {main}().. \ insert.php:0
(!)注意:未定义的索引:第6行的C:\ wamp \ www \ insert.php中的LastName 调用堆栈
1 0.0007 369800 {main}().. \ insert.php:0
(!)注意:未定义的索引:第7行的C:\ wamp \ www \ insert.php中的年龄 调用堆栈
1 0.0007 369800 {main}().. \ insert.php:0 记录添加到数据库
以下是PHP代码:PLS帮助我并提前感谢
<html>
<body>
<?php
$first=$_POST ['FirstName'];
$last=$_POST ['LastName'];
$a=$_POST ['Age'];
$user_name = "root";
$password = "";
$database = "my_db";
$server = "127.0.0.1";
$db_handle = mysql_connect($server, $user_name, $password);
$db_found = mysql_select_db($database, $db_handle);
if ($db_found) {
$SQL = "INSERT INTO persons(FirstName, LastName, Age) VALUES ('$first', '$last', '$a')";
$result = mysql_query($SQL);
mysql_close($db_handle);
print "Records added to the database";
}
else
{
print "Database NOT Found ";
mysql_close($db_handle);
}
?>
AND HTML FORM IS BELOW:
<html>
<body>
<form action="insert.php" mehtod="POST">
First Name: <input type="text" name="FirstName">
<br />
Last Name:<input type="text" name="LastName">
<br />
Age:<input type="text" name="Age">
<br />
<input type="submit" value="ADD" />
</form>
</body>
</html>
答案 0 :(得分:2)
很可能未设置$_POST
- 变量。
试试......
var_dump($_POST);
......而不是......
$first=$_POST['FirstName'];
$last=$_POST['LastName'];
$a=$_POST['Age'];
...调试,如果您要查找的值存储在那里(请删除$_POST
和标识符之间的空格,请!)。
不是你的问题,但是如果你INSERT
这些变量而不首先清理它们,那就开启了SQL注入的任何可能性。正确消毒它们以应对这种风险。
答案 1 :(得分:1)
您已在
中使用 mehtod<Form mehtod="post">
而不是
<Form method="post">
答案 2 :(得分:0)
您确定要使用POST而不是GET提交表单吗?
尝试添加转储以查看您获得的内容
<?php
var_dump($_POST);
var_dump($_GET);
//Anyway you can use $_REQUEST instead of $_POST or $_GET
$first= $_REQUEST['FirstName'];
$last= $_REQUEST['LastName'];
答案 3 :(得分:0)
试试这个:
if ($db_found) {
$SQL = sprintf("
INSERT INTO persons
(FirstName, LastName, Age)
VALUES ('%s', '%s', '%s')",
mysql_real_escape_string($first),
mysql_real_escape_string($last),
mysql_real_escape_string($a));
$result = mysql_query($SQL);
if( $result == true ){
print "Records added to the database";
}
mysql_close($db_handle);
}
它无法正常工作的原因是你没有在任何地方调用你的$ result,你只是声明了它。
此外,我将您的查询放入sprintf()函数,这意味着您可以更轻松地查看传递的数据。
另一件事是,您要检查受影响的行是否为&gt; 0表示已插入某些内容。
答案 4 :(得分:0)
您看到的“错误”实际上是通知。它们之所以发生是因为您正在尝试访问不存在的数组索引。
当您尝试从$ _POST中获取值时,它们不存在,并且会生成通知。
可以turn these notices off,但你不应该这样做。相反,您应该使用AND SANITIZE IT FOR GOODNESS' SAKE或isset检查以确保输入有效(empty!)。
显示错误的原因很难猜测,因为您没有包含用于发布数据的HTML。但最有可能的是,你错误地命名变量或通过GET而不是POST发送它们。