PHP/MySQLi表单SQL语法错误-建议,答案,或为什么它的建议';It’不起作用


PHP/MySQLi form SQL Syntax Error - Suggestions, Answers, or Advice on why it's not working?

我已经看到这个问题被问了很多次,我尝试过不同的解决方案,但都没有遇到任何运气,所以这里是:我正在创建一个表单,该表单暂时存储用户名和密码,而不进行验证(用于测试和学习)。我正在使用var_dump($_POST);因此,我可以看到值是从html表单输入的。我不确定自己做错了什么,并感谢任何建议、答案和建议。提前感谢!

array(2){["username"]=>string(5)"rafel"["password"]=>string(6)"rafael"}

错误:您的SQL语法有错误;查看与MySQL服务器版本对应的手册,了解在第1行"用户名"、"密码")VALUES("rafel"、"rafael")附近使用的正确语法

我的php如下:

<?php 
var_dump($_POST); 
$server_name = "*******";
$admin_name = "********";
$root_password = "********";
$database_name = "myDBPDO";
$table_name = "myguests";
$connect = mysql_connect($server_name, $admin_name, $root_password); 
if (!'connect') {die('Connection Failed: ' . mysql_error());} 
mysql_select_db($database_name, $connect); 
if(isset($_POST['username'])) 
$username = mysql_real_escape_string($_POST['username']);
if(empty($username)) $username = 'heybardly'; 
if(isset($_POST['password'])) 
$password = mysql_real_escape_string($_POST['password']);
if(empty($password)) $password = 'monochrome1724';
$user_info = "INSERT INTO table_name ('username', 'password') VALUES ('$username', '$password')"; 
if (!mysql_query($user_info, $connect)) {die('Error: ' . mysql_error());}
echo "Your information was added to the database.";
echo "New record has id: " . mysqli_insert_id($connect);
mysql_close($connect);
?>

我的HTML表单:

<!DOCTYPE html>
<html>
<head>
<title>Cinnamon RP</title>
<link rel="stylesheet" type="text/css" href="mainstylesheet.css">
</head> 
<body> 
<form action="form.php" method="post">
Username:<input type="text" name="username">
Email:<input type="text" name="password">
Submit<input type="submit" value="Submit"/>
</form>
</body>
</html>

您必须在column and table name 中使用backtick而不是quotes

 $user_info = "INSERT INTO `table_name` (`username`, `password`) VALUES ('".$username."', '".$password."')";

注意:-mysql不推荐使用mysqli或pdo-

不要将普通密码存储到数据库中

检查http://php.net/manual/en/faq.passwords.php

http://php.net/manual/en/function.password-hash.php

使用反方括号而不是单引号。这应该是

$user_info = "INSERT INTO table_name (`username`, `password`) VALUES ('$username', '$password')";
                                      ^        ^  ^        ^

删除列名中的引号。

关于未来编码的建议。。。开始使用PDO或Mysqli,因为mysql已被弃用。