为什么PDO INSERT在我的循环中失败?

时间:2015-02-23 22:33:21

标签: php mysql pdo

我是编程的新手,我正在尝试为我姐姐建立一个网站作为第一个项目。这是一个相当简单的照片库。

我现在要做的一件事是循环遍历我的计算机上的整个目录(我知道当我把它放在网络服务器上时必须更改)并将图像路径更新到MySQL。我已经建立了与数据库的良好连接,但遇到了我的循环问题。

foreach(glob($dir) as $file) {  
    $values[] = $file;
 };

 while (list($var, $val) = each($values)){
    $query = ("INSERT INTO emilys_photos.images (path, who_update) VALUES ($val, 'morgan')");
    $stmt = $dbh->prepare($query);
    $stmt->execute();

 }

我知道这是因为我的while循环而破坏,但我在调试它时遇到了麻烦,并弄清楚它在哪里突破。我不知道如何进行批量INSERT,我已经阅读了大量的堆栈溢出答案,并尝试了使用内爆但他们没有任何工作的内容。万分感谢!

1 个答案:

答案 0 :(得分:0)

顺便说一句,我建议使用参数绑定,正如@ spencer7595所说。将您的代码更改为:

$query = "
    INSERT INTO emilys_photos.images
        (path, who_update)
        VALUES (:path, 'morgan')
";
$stmt = $dbh->prepare($query);
$stmt->execute([':path' => $val, ]);

我也做了一些字符串包装 - PHP和SQL数据库都很好用,这使得所以更具可读性。