当我试图做这个MySQL语法错误试图插入序列化阵列
您的SQL语法错误;检查手册该 对应于你的MySQL服务器版本的正确的语法使用 附近 “一个:33:{I 0,S:76:\” http://www.example.com/wp-content/uploads/2016/07/Abc.jpg ' 位于第1行
I'敢肯定它是serialize($images_array)
因为当我将其删除其他值会被插入到数据库中。
我的数组包含图片的链接。
当我试图做这个MySQL语法错误试图插入序列化阵列
您的SQL语法错误;检查手册该 对应于你的MySQL服务器版本的正确的语法使用 附近 “一个:33:{I 0,S:76:\” http://www.example.com/wp-content/uploads/2016/07/Abc.jpg ' 位于第1行
I'敢肯定它是serialize($images_array)
因为当我将其删除其他值会被插入到数据库中。
我的数组包含图片的链接。
入住这里,你有额外的单引号'
$query .= "'{$page_link}','{$title}','{$content}','" . serialize($images_array) . "','{$date}'";
您的查询更改为这有一个额外的“”在您的查询使它像这样,
“”。序列化($ images_array)。 “”
$query = "INSERT INTO news (";
$query .= "page_link,title,content,images,date";
$query .= ") VALUES (";
$query .= "'{$page_link}','{$title}','{$content}','" . serialize($images_array) . "','{$date}'";
$query .= ")";
而是采用直接替换值,可以使用下面的方法来避免SQL注入
希望这将解决您的问题
你基本上有两种选择来实现这一目标:
使用PDO(任何支持的数据库驱动程序):
$stmt = $pdo->prepare('SELECT * FROM employees WHERE name = :name');
$stmt->execute(array('name' => $name));
foreach ($stmt as $row) {
// do something with $row
}
使用库MySQLi(MySQL的):
$stmt = $dbConnection->prepare('SELECT * FROM employees WHERE name = ?');
$stmt->bind_param('s', $name);
$stmt->execute();
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
// do something with $row
}
了解准备语句 – Jens
或者至少是逃不过你的数据 – Kickstart
也学会做自己的简单的调试。那是什么眼睛 – RiggsFolly