Php 使用MySQLi插入查询时遇到问题

Php 使用MySQLi插入查询时遇到问题,php,mysqli,Php,Mysqli,好的,我正在将我的站点从MySQL更新为MySQLi,这意味着我必须重新编码一些数据库内容 我在php.net上查看了如何使用MySQLi查询将数据插入到表中,并完全按照他们所说的做了,但运气不好 以下是我的连接变量: $con = mysqli_connect("localhost", "username", "password", "database"); 下面是插入数据的代码: mysqli_query($con, "INSERT INTO users ('user', 'pass',

好的,我正在将我的站点从
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')");
它不会回复任何错误,只会将我带到预定的登录页。但它实际上并没有将数据添加到表中


有什么想法吗?

删除列名中的单引号

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


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

mysqli_query($con, "INSERT INTO users (user, pass, email) VALUES ('$user', '$pass', '$email')");
但我还注意到,您的脚本容易受到SQL注入攻击。 在
MySQLi
中,您可以在执行语句之前删除它们,这样您就可以确保没有人会在数据库中插入SQL命令

如果您不想在执行之前准备每个sql语句,那么至少使用该函数,这也会保护您的系统不受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) . "')");

列名应该用
`
分隔,而不是用
'
分隔。您不必分隔列名。成功了。谢谢你,伙计。@demonking你没有,但如果你做了,就应该做得正确。@Boaz是的,你是对的,但这是可选的;)
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) . "')");