首先,我是mysql和php的新手,现在我只想在mysql数据库中使用php在两个文本框中插入一些数据。
这里的数据库名称是“info”,表名是“students”,有三列,如id(主键,自动增量激活),名称和部门。有两个文本框txtName和txtDept。我希望当我按下回车按钮时,文本框中的数据将被插入到mysql数据库中。我尝试了以下代码,但数据没有插入表格....
<html>
<form mehtod="post" action="home.php">
<input type="text" name="txtName" />
<input type="text" name="txtDept" />
<input type="submit" value="Enter"/>
</form>
</html>
<?php
$con = mysqli_connect("localhost","root","","info");
if($_POST){
$name = $_POST['txtName'];
$dept = $_POST['txtDept'];
echo $name;
mysqli_query($con,"INSERT INTO students(name,dept) VALUES($name,$dept);");
}
?>
答案 0 :(得分:6)
您的发布的代码存在一些问题。
mehtod="post"
它应该是method="post"
- 拼写错误。
另外,引用你的价值观
VALUES('$name','$dept')
请使用prepared statements或PDO with prepared statements。
因为您的现有代码向SQL injection
开放error_reporting(E_ALL);
ini_set('display_errors', 1);
您还应检查数据库错误。
$con = mysqli_connect("localhost","root","","info")
or die("Error " . mysqli_error($con));
以及or die(mysqli_error($con))
到mysqli_query()
<强> 旁注/建议: 强>
如果您的整个代码都位于同一个文件(,似乎是)中,请考虑使用名为attribute的提交按钮将PHP / SQL包装在条件语句中,否则,您可能会获得{ {1}}警告。
命名您的提交按钮Undefined index...
并且正在做
<input type="submit" name="submit" value="Enter"/>
设置错误报告时,只需执行if(isset($_POST['submit'])){ code to execute }
可能会产生意外结果。
重写: ,使用mysqli_real_escape_string()
和stripslashes()
增加了一些安全性
if($_POST){
根据手册:http://php.net/manual/en/mysqli.connect-error.php,如果您希望使用以下方法对此作出评论:
<html>
<form method="post" action="home.php">
<input type="text" name="txtName" />
<input type="text" name="txtDept" />
<input type="submit" name="submit" value="Enter"/>
</form>
</html>
<?php
$con = mysqli_connect("localhost","root","","info")
or die("Error " . mysqli_error($con));
if(isset($_POST['submit'])){
$name = stripslashes($_POST['txtName']);
$name = mysqli_real_escape_string($con,$_POST['txtName']);
$dept = stripslashes($_POST['txtDept']);
$dept = mysqli_real_escape_string($con,$_POST['txtDept']);
echo $name;
mysqli_query($con,"INSERT INTO `students` (`name`, `dept`) VALUES ('$name','$dept')")
or die(mysqli_error($con));
}
?>
答案 1 :(得分:0)
上帝拯救我们所有人...... 而是使用PDO类:)。通过使用PDO,您还可以在客户端上制作准备好的语句并使用命名参数。如果你不得不改变你的数据库驱动程序PDO支持大约12个不同的驱动程序(18个不同的数据库!),其中MySQLi只支持一个驱动程序(MySQL)。 :( 在性能方面,MySQLi的速度提高了约2.5%,但这并没有太大的差别。无论如何,我的选择是PDO :)。