使用MySQLi INSERT查询时遇到问题

时间:2013-12-26 13:41:05

标签: php mysqli

好的,我将我的网站从MySQL更新为MySQLi,这意味着我必须重新编写一些数据库内容。

我在php.net上查看了如何使用MySQLi查询将数据插入到表中并完全按照他们的说法进行操作,但没有运气。

这是我的连接变量:

$con = mysqli_connect("localhost", "username", "password", "database");

以下是插入数据的代码:

mysqli_query($con, "INSERT INTO users ('user', 'pass', 'email') VALUES ('$user', '$pass', '$email')");

它没有回复任何错误,它只是带我到预期的目标网页。它实际上并没有将数据添加到表中。

有什么想法吗?

2 个答案:

答案 0 :(得分:1)

如上所述,从列名中删除引号将解决您的问题:

mysqli_query($con, "INSERT INTO users (user, pass, email) VALUES ('$user', '$pass', '$email')");

但我也注意到你的脚本容易受到SQL注入攻击。 在MySQLi中,您可以在执行前prepare语句,因此您将确保没有人会在您的数据库中注入SQL命令。

如果您不想在执行前准备每个sql语句,至少使用mysqli_real_escape_string函数,这将保护您的系统免受SQL注入。使用那样:

mysqli_query($con, "INSERT INTO users (user, pass, email) VALUES ('" . mysqli_real_escape_string($user) . "', '" . mysqli_real_escape_string($pass) . "', '" . mysqli_real_escape_string($email) . "')");

答案 1 :(得分:0)

从列名中删除单引号

mysqli_query($con, "INSERT INTO users (user, pass, email) VALUES ('$user', '$pass', '$email')");

OR

mysqli_query($con, "INSERT INTO users (`user`, `pass`, `email`) VALUES ('$user', '$pass', '$email')");