如何使用PHP中的预准备语句将多个记录添加到多行

时间:2015-06-25 22:10:48

标签: php mysqli prepared-statement

我正在制作照片上传器,允许我一次上传多张图片以创建照片库。这部分工作正常。

我想要做的是使用MySQLi预处理语句将每个图像的文件名,活动状态和创建的时间戳记录到名为photos的数据库表中,并且我希望每张照片的filemane(在这种情况下)存储在它自己的行。我想一次性执行此操作,而不是将查询包装在循环中。每个图库并不总是拥有相同数量的照片。

我的初始结果只存储了第一个文件名。经过大约4个小时的研究,我决定使用这个代码,它完全按照我的意愿工作,但是有一种唠叨的感觉,这种方法效率低下。这会为每张照片的信息创建单独的插入查询吗?作为参考,$names数组由上传脚本创建,仅包含文件名,$active是一个硬编码变量,可以通过此系统中其他位置的更新页面进行更改。

$sql = 'INSERT INTO photos (photo_filename, photo_active, photo_created)
    VALUES (?, ?, NOW())';
$stmt->prepare($sql);
foreach ($names as $filename) {
$stmt->bind_param('si', $filename, $active);
$stmt->execute();
}
$imageOK = $stmt->affected_rows;

如果此代码实际上创建了多个插入查询,那么在单个查询中如何插入一组记录(可能是25个,可能是75个或更多)的任何帮助都将非常感激。这是针对我将使用的后端系统,因此服务器负载不会很大。不过,如果上述代码不是开展业务的最佳方式,那么我想学习最好的方法。

此代码提供的所需结果:

+----------------+--------------+---------------------+
| photo_filename | photo_active | photo_created       |
+----------------+--------------+---------------------+
| image_1.jpg    | yes          | 2015-06-25 15:12:47 |
+----------------+--------------+---------------------+
| image_2.jpg    | yes          | 2015-06-25 15:12:47 |
+----------------+--------------+---------------------+
and so on...

非常感谢!

0 个答案:

没有答案