我正在尝试重新学习SQL和phpmyadmin,但我无法获得SQL连接和查询工作。我正在使用基本表单来确定如何通过表单添加信息。我有一个包含5列的表:user_ID,email,username,first_name和last_name。 user_ID是具有auto-update和bigint属性的主键,而email和username都是唯一键。用户具有以下全局特权:SELECT,INSERT,UPDATE,DELETE和CREATE TEMPORARY TABLES。我希望我能弄清楚出了什么问题,这样我才能继续工作。
编辑:我刚刚验证了我的代码中的'$ cxn'部分正在运行,而这只是我的$ results查询。我也检查过,表单中的所有数据都正确地传递给查询。我还修复了代码的格式,我仍然遇到同样的错误。
$host = 'localhost';
$user = 'users';
$dbpass = 'password';
$dbname = 'users';
$cxn = mysqli_connect($host,$user,$dbpass,$dbname) or die("Could not connect to server.");
if(isset($_POST['submitted']) and $_POST['submitted'] == 'yes')
{
$query = "insert into 'user_info' ('email', 'username', 'first_name', 'last_name') values ([".$_POST['email']."], [".$_POST['username']."], [".$_POST['first_name']."], [".$_POST['last_name']."])";
$result = mysqli_query($cxn,$query) or die('Can\'t complete query.');
echo "Congratulations!";
}
编辑2:根据一些评论的建议,我已将我的代码更改为以下内容。我认为这应该是SQL注入安全的,应该正确格式化。但是,仍然在提交时给我错误,我不确定我还能改变什么。我开始认为数据库本身出了问题,但除了添加用户之外我没有更改任何设置。
$email = $_POST['email'];
$username = $_POST['username'];
$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$safe_email = mysql_real_escape_string($email);
$safe_username = mysql_real_escape_string($username);
$safe_first = mysql_real_escape_string($first_name);
$safe_last = mysql_real_escape_string($last_name);
$query = "insert into `user_info` (`email`, `username', `first_name`, `last_name`) values ('$safe_email', '$safe_username', '$safe_first', '$safe_last')";
$result = mysqli_query($cxn,$query) or die('Can\'t complete query.');
echo "Congratulations!";
答案 0 :(得分:2)
将插入查询更改为 -
$query = "insert into `user_info` (`email`, `username`, `first_name`, `last_name`) values ('{$_POST['email']}', '{$_POST['username']}', '{$_POST['first_name']}', '{$_POST['last_name']}')";
此外,在注释之后,您的代码将打开以进行SQL注入。请use prepared statements使用参数化查询来避免这种情况。
另请参阅this thread以获取更多信息。
答案 1 :(得分:-1)
请从[]
值旁边删除$_POST
,并对每个值进行适当的""
,如下所示:'".$_POST['email']."'
答案 2 :(得分:-1)
我不确定,但我会做以下事情:
$query = "insert into user_info (email, username, first_name, last_name) values ('".$_POST['email']."', '".$_POST['username']."', '".$_POST['first_name']."', '".$_POST['last_name']."')";