当我试图这样做时:
$query = "INSERT INTO news ( ";
$query .= "page_link,title,content,images,date";
$query .= ") VALUES ( ";
$query .= "'{$page_link}','{$title}','{$content}',''" . serialize($images_array) . "'','{$date}'";
$query .= ")";
我给出了这个错误:
您的SQL语法有错误;检查手册 对应于您的MySQL服务器版本,以便使用正确的语法 近 '一个:33:{I 0,S:76:\" http://www.example.com/wp-content/uploads/2016/07/Abc.jpg' 在第1行
我确定它为serialize($images_array)
,因为当我删除它时,其他值将被插入到数据库中。
我的数组包含图像链接。
答案 0 :(得分:1)
点击此处您有额外的单引号'
$query .= "'{$page_link}','{$title}','{$content}','" . serialize($images_array) . "','{$date}'";
答案 1 :(得分:1)
您可以使用以下方法来避免使用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
}
答案 2 :(得分:0)
将您的查询更改为此内容还有一个额外的''在你的查询中使它像这样,
<强>&#39;&#34; 。序列化($ images_array)。 &#34;&#39; 强>
$query = "INSERT INTO news ( ";
$query .= "page_link,title,content,images,date";
$query .= ") VALUES ( ";
$query .= "'{$page_link}','{$title}','{$content}','" . serialize($images_array) . "','{$date}'";
$query .= ")";