如何将元素插入mysql数据库

时间:2015-02-12 17:23:05

标签: php mysql

我正在学习mySQL.Here我有一个名为"practice"的数据集,它有一个名为"users"的表。这个表有四列。

username,password,firstname,lastname;

我有一个表单字段来获取用户输入,这些字段将被插入到我的mysql表中。但是每当我想向表中插入一个新用户时它就会出错。这可能是导致这个问题的原因吗?

  

错误:INSERT INTO用户(用户名,密码,名字,姓氏)   VALUES(Nelson,101a6ec9f938885df0a44f20458d2eb4,Nelson,Mandela)你   您的SQL语法有错误;检查对应的手册   您的MySQL服务器版本,以便使用接近')VALUES的正确语法   (尼尔森,101a6ec9f938885df0a44f20458d2eb4,纳尔逊,曼德拉)'在第1行

<?php
if(isset($_POST['name']) &&isset($_POST['password'])){
   if(!empty($_POST['name']) && !empty($_POST['password'])){
$servername = $_SERVER['SERVER_NAME'];
$username = "root";
$password = "";
$dbname = "practice";

$user=htmlentities($_POST['name']);
$firstname=htmlentities($_POST['firstname']);
$lastname=htmlentities($_POST['lastname']);
$pass=md5(htmlentities(filter_var($_POST['password'],FILTER_SANITIZE_STRING)));

echo $password;
// Create connection
$conn = new mysqli($servername, $username, $password,$dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}


$sql = "INSERT INTO users (username,password,firstname,lastname)
VALUES ($user,$pass,$firstname,$lastname)";

if ($conn->query($sql) === TRUE) {
    echo "New record created successfully";
} else {
    echo "ERROR: " . $sql . "<br>" . $conn->error;
}

$conn->close();

}
}
?> 

<form action='foreach.php' method='post'>

      name      :<input type='text' name='name' placeholder='name'></br>
      firstname : <input type='text' name='firstname' placeholder='firstname'></br>
      lastname  : <input type='text' name='lastname' placeholder='lastname'></br>
      password  :<input type='text' name='password' placeholder='password'></br>
      <input type='submit'>

</form>

2 个答案:

答案 0 :(得分:6)

编辑:由于您删除了编辑中的尾随逗号而未将其标记为修改

<击> 删除lastname,&lt; =中的尾随逗号

引用您的值,因为它们是字符串

VALUES ('$user','$pass','$firstname','$lastname')

补充说明:

您目前的代码向SQL injection开放。使用mysqli with prepared statementsPDO with prepared statements

你似乎也在使用MD5来存储密码,这是非常气馁的,它是旧的并且被认为是破碎的。

对于密码存储,请使用CRYPT_BLOWFISH或PHP 5.5的password_hash()功能。对于PHP&lt; 5.5使用password_hash() compatibility pack

阅读有关MD5的这些文章:

答案 1 :(得分:2)

插入firstname,lastname,)末尾有一个额外的逗号。此外,您需要引用您的值String

$sql = "INSERT INTO users (username,password,firstname,lastname,)
VALUES ($user,$pass,$firstname,$lastname)";

应改为

$sql = "INSERT INTO users (username,password,firstname,lastname)
VALUES ('$user','$pass','$firstname','$lastname')";