我在将表单 $_POST 变量插入 MySQL 时遇到问题! 我知道这是一个单引号问题,但根本无法解决。
代码是:
$naziv_db = $_POST["naziv"];
$naziv_db = mysql_real_escape_string($naziv_db);
$query = "INSERT INTO items (title) VALUES ('$naziv_db')";
$stmt = mysql_query($query) or die("MySQL error: " . mysql_error());
如果我输入一个包含 "
的值,它会正确插入,但如果它包含 '
,则会出现错误!
例如,如果我的输入是 Milky 的
error is: MySQL error: 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
如果我的输入是 "Milkys"
一切顺利...
我是新来的,所以不能发布我自己问题的答案,所以我必须编辑!
Christian 的解决方案是正确的!
我修改了代码:
$query = "INSERT INTO items (title) VALUES ('$naziv_db')";
到:
$query = 'INSERT INTO `items` (`title`) VALUES ("'.$naziv_db.'")';
现在它可以毫无错误地接受 "和 '!
谢谢你们,你们是最棒的:D
最佳答案
要完全避免这种情况,您最好使用准备好的语句。
this question 的答案中有一个很好的例子.
针对您的情况进行转换后,您将获得:
$db = new mysqli("host","user","pw","database");
$stmt = $db->prepare("INSERT INTO items (title) VALUES (?)");
$stmt->bind_param('s', $_POST["naziv"]);
$stmt->execute();
$stmt->close();
关于php - 引号和 mysql 插入的问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/5665067/