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) . "')");