好的,我将我的网站从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')");
它没有回复任何错误,它只是带我到预期的目标网页。它实际上并没有将数据添加到表中。
有什么想法吗?
答案 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')");