当我尝试使用撇号提交数据时出现问题,将无法保存到数据库中。
com0是我的表单字段。
$ucom0= mysqli_real_escape_string($_POST['com0']);
$AddQuery = "INSERT INTO database(feed1,comp1) VALUES ('".$ucom0."','".$uincrease0."')";
这是错误:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 's
答案 0 :(得分:3)
带撇号的数据会过早地关闭SQL语句。这很糟糕,可以对SQL注入开放。你应该真的使用prepared statements。但是,可以使用mysqli_real_escape_string
。
但是这不起作用的原因是因为mysqli_real_escape_string
在您按程序调用它时需要两个参数(与已弃用的mysql_real_escape_string())
不同;
$ucom0= mysqli_real_escape_string($link, $_POST['com0']);
其中$link
是从连接到数据库时返回的变量:
$link = mysqli_connect("databasehost", "username", "password", "database");
如果您使用基于对象的mysqli进行连接,则会有所不同:
$mysqli = new mysqli("databasehost", "username", "password", "database");
$ucom0 = $mysqli->real_escape_string($_POST['com0']);