问题在于每当我以我的php页面的形式输入一个大屁股文本并尝试INSERT
通过SQL查询进入数据库时,它会给我一个这样的错误:
“你的SQL语法有错误;请查看与你的MySQL服务器版本相对应的手册,以便在''样本标题'附近使用正确的语法,'花了很长时间的雨季闭嘴在第1行的房间
查询是这样的:
$sql = "INSERT INTO `d` (`user_id`, `title`, `message`) VALUES ($user_id, '$topic', '$message')";
有趣的是,当我手动插入值并在phpmyadmin中运行查询时,它没有给我任何错误。
答案 0 :(得分:2)
我打赌字符串中有单引号(')。在INSERT中使用它之前,请退出$topic
。
答案 1 :(得分:1)
使用准备好的陈述:
$db = new PDO(...);
$stmt = $db.prepare("INSERT INTO `d` (`user_id`, `title`, `message`) VALUES ($user_id, :topic, :message)");
// I'm assuming that title is a VARCHAR(50) and message is a VARCHAR(500)
$stmt->bindParam(":topic", $topic, PDO::PARAM_STR, 50);
$stmt->bindParam(":message", $topic, PDO::PARAM_STR, 500);
$stmt->execute();
这使得将数据转发/正确传递的工作完全放在数据库引擎的手中 - 这就是它所属的位置。尽可能避免在用户输入中构建SQL字符串,并避免许多潜在的SQL注入攻击。