插入Blob无法正常工作(mysql_real_escape_string)

时间:2018-07-08 15:36:22

标签: mysql-real-escape-string

我正在尝试将图像Blob从一个表复制到另一个表,但由于mysql_real_escape_string()不再可用,所以它不起作用。 Blob中的特殊字符阻止了插入,我无法弄清楚如何解决此问题。您的帮助将不胜感激。谢谢。

foreach ($dbh->query($query_images) as $images-1) {
  $ins = "INSERT INTO images-2 SET image_blob='".images-1['image_blob']."'";
  $dbh->exec($ins);
}

1 个答案:

答案 0 :(得分:0)

首先,您拥有:

 $ins = "INSERT INTO images-2 SET image_blob='".images-1['image_blob']."'";

可能的时候:

 $ins = "INSERT INTO images-2 SET image_blob='".$images-1['image_blob']."'";

但这可能只是您的帖子中的错字。

您可以在纯MySQL中执行此操作,而不必遍历images-1表中的每一行:

INSERT INTO images-2 (image_blob) VALUES (SELECT image_blob FROM images-1)

如果是某种转义问题,我建议您使用PHP中的PDO东西:

$pdo = new PDO('mysql:host=hostname;dbname=db', $user, $pass);
foreach($dbh->query($query_images) as $images-1) {
    $sth = $pdo->prepare("INSERT INTO images-2 SET image_blob=?")
    $sth->execute([$images-1['image_blob']]);
}

我没有测试任何代码,只是根据文档和经验将它们组合在一起。