引号和mysql插入到麻烦

| 我在将表格$ _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());
如果输入包含
\"
的值,它将正确插入,但是如果包含
\'
,则将出现错误! 例如,如果我输入的是“ 3”
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\"
,一切都会顺利进行... 我是新来的,因此无法发布自己的问题的答案,因此我必须进行编辑! 克里斯汀的解决方案是正确的! 我更改了代码:
$query = \"INSERT INTO items (title) VALUES (\'$naziv_db\')\";
至:
$query = \'INSERT INTO `items` (`title`) VALUES (\"\'.$naziv_db.\'\")\';
现在它可以正确接受\“和\'! 谢谢你们,你是最好的:D     
已邀请:
为完全避免这种情况,最好使用准备好的语句。 这个问题的答案有一个很好的例子。 根据您的情况进行转换,您将得到:
$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();
    
从您的代码中获得这样的错误是完全不可能的。 最有可能的地方是错字。 可能是您转义了错误的变量,或者是另一个查询产生了此错误 您确定发布了实际运行的代码吗?是确切的代码还是草图? 将您的mysql_query字符串更改为此
mysql_query($query) or trigger_error(mysql_error().\" \".$sql);
并粘贴其输出。 或者,甚至更改整个代码:
ini_set(\'display_errors\',1);
error_reporting(E_ALL);

$naziv_db = $_POST[\"naziv\"];
$naziv_db = mysql_real_escape_string($naziv_db);
$query = \"INSERT INTO items (title) VALUES (\'$naziv_db\')\";

var_dump($_POST[\"naziv\"]);
echo \"<br>\\n\";
var_dump($naziv_db);
echo \"<br>\\n\";
var_dump($query);
echo \"<br>\\n\";

mysql_query($query) or trigger_error(mysql_error().\" \".$sql);
这称为“调试”,通常会有所帮助。     
尝试添加斜杠-用于将字符串解析为数据库友好的内容。     

要回复问题请先登录注册