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


Why is a PDO INSERT failing in my loop?

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

我现在想做的一件事是循环浏览我电脑上的整个目录(我知道当我把它放在网络服务器上时,必须更改它),并将图像路径更新到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,我读过很多堆栈溢出的答案,并尝试过他们使用内爆所做的,但也没有任何一个能起作用。非常感谢!

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

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

我也做了一些字符串包装——PHP和SQL数据库都很好,这使得的东西可读性更强。