无法执行PDO查询

时间:2016-10-19 11:43:35

标签: php mysql sql pdo

我试图将路径放到我之前放入ftp的图像中,我有10个不同的列

 photo1, photo2, photo3

这是我的代码

for($i = 1; $i < $number_of_files + 1 ; $i++){

  $column = 'photo' . $i;
  $file = 'gallery/zdjecie-' . $id . '-' . $i;
    $sql = "UPDATE gallery SET :column=:zdjecie WHERE id=:id";
    $go = $db->prepare($sql);
    $go->bindParam(':column', $column);
    $go->bindParam(':zdjecie', $file);
    $go->bindParam(':id', $id);
    $go->execute();
    $go->closeCursor();
    $go = null;
}

显示此错误

  

致命错误:未捕获的异常&#39; PDOException&#39;与消息   &#39; SQLSTATE [42000]:语法错误或访问冲突:1064有些东西   你的语法错误了#1&#39; photo1&#39; =&#39; gallery / zdjecie-4-1&#39;哪里   ID =&#39; 4&#39;&#39; w linii 1&#39;在

所以我想做这样的事情

在photo1列中

应该是/ gallery / zdjecie-X-1 ... 其中X是ID

1 个答案:

答案 0 :(得分:1)

此行错误

 $sql = "UPDATE gallery SET :column=:zdjecie WHERE id=:id";

不要在列名前面使用:,也不能将列名称设为可替换参数

$sql = "UPDATE gallery SET column=:zdjecie WHERE id=:id";

您必须执行此操作才能使列名称可替换

$sql = "UPDATE gallery SET $column = :zdjecie WHERE id=:id";

仔细观察会让我觉得你在数据库设计中已经做了一个基本的错误。

您应该使用单独的表来使用此拥有表的键的外键来保存此数据