[英]How to insert record using PHP MySQL?
我创建了数据库(my_db)和表(人),在其中使用了三个字段:名字,姓氏和年龄。 我在php脚本下运行,它显示如下错误:
(!)注意:未定义的索引:第5行调用堆栈的C:\\ wamp \\ www \\ insert.php中的名字
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>
您很有可能未设置$_POST
变量。
试试...
var_dump($_POST);
...代替...
$first=$_POST['FirstName'];
$last=$_POST['LastName'];
$a=$_POST['Age'];
...进行调试,如果您要查找的值存储在其中(请也除去$_POST
和标识符之间的空间!)。
这不是您的问题,但是如果您要INSERT
这些变量而不先对其进行清理,那么将为SQL注入打开任何可能性。 适当地消毒它们以应对这种风险。
您已在其中使用Mehtod
<Form mehtod="post">
代替
<Form method="post">
您确定要使用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'];
尝试这个:
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()函数,这意味着更容易查看要传递的数据。
另一件事是,您要检查受影响的行是否大于0,因为这意味着已插入某些内容。
您看到的“错误”实际上是通知。 发生这些错误是因为您尝试访问不存在的数组索引。
当您尝试从$ _POST中获取值时,它们不存在,并且会生成通知。
可以关闭这些通知 ,但您不可以。 相反,您应该使用isset或empty检查输入是否有效( 并且对它进行良好的清酒 !)。
显示错误的原因很难猜测,因为您还没有包括用于发布数据的HTML。 但是最有可能的是,您将变量命名错误或通过GET(而不是POST)发送了变量。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.