不能使用php在mysql数据库中插入数据

时间:2014-09-20 14:27:07

标签: php mysql

首先,我是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);");


}

?>

2 个答案:

答案 0 :(得分:6)

您的发布的代码存在一些问题。

mehtod="post"它应该是method="post" - 拼写错误。

另外,引用你的价值观

VALUES('$name','$dept')

请使用prepared statementsPDO with prepared statements

因为您的现有代码向SQL injection

开放

并添加error reporting

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 :)。