【发布时间】:2016-03-04 10:37:58
【问题描述】:
这是我的名为 画廊 的桌子: Click here to see a table named galleries 如您所见,有名为:id、path 和 gallery_id 的字段。 我写了一个脚本,在插入查询后上传多张图片:
for($i=0; $i<count($_FILES['image']['name']); $i++)
{
$path = 'sent_images/'.$_FILES['image']['name'][$i];
$gallery_id = '1';
$mysqli = new mysqli('localhost', 'root', '', 'database');
$q = $mysqli->prepare('INSERT INTO galleries (path, gallery_id) VALUES (?, ?)');
$q->bind_param('si', $path, $gallery_id);
$q->execute();
if($q->affected_rows > 0)
{
move_uploaded_file($_FILES['image']['tmp_name'][$i], $path);
}
}
脚本运行良好。让我展示一下,我希望脚本做什么:
- 我第一次上传了 3 张图片作为示例: “gallery_id”字段如下所示:
id | patch | gallery_id --------------------------------- 1 | some patch | 1 2 | some patch | 1 3 | some patch | 1
- 我第二次上传了 5 张图片作为示例: “gallery_id”字段如下所示:
id | patch | gallery_id --------------------------------- 1 | some patch | 1 2 | some patch | 1 3 | some patch | 1 4 | some patch | 2 5 | some patch | 2 6 | some patch | 2 7 | some patch | 2 8 | some patch | 2等等
我发现了类似的东西:
INSERT INTO galleries (path, gallery_id) VALUES (?, ?) SELECT max(gallery_id) + 1 FROM galleries
会有所帮助,但我不知道如何在上面的脚本中使用它。
///////////////////////////////////////////////////////////////////////
我们的论坛朋友 Vigneswaran S 帮助我找到了解决方案。为了使代码正常工作,我们只需:
$mysqli = new mysqli('localhost', 'root', '', 'gracom');
$q = $mysqli->prepare('SELECT MAX(gallery_id) FROM galleries');
$q->execute();
$q->bind_result($gallery_id);
$q->store_result();
while($q->fetch())
{
$gallery_id = $gallery_id + 1;
for($i=0; $i<count($_FILES['image']['name']); $i++)
{
$path = 'sent_images/'.$_FILES['image']['name'][$i];
$q = $mysqli->prepare('INSERT INTO galleries (path, gallery_id) VALUES (?, ?)');
$q->bind_param('si', $path, $gallery_id);
$q->execute();
if($q->affected_rows > 0)
{
echo 'Done!';
move_uploaded_file($_FILES['image']['tmp_name'][$i], $path);
}
}
}
谢谢你们的帮助,伙计们。
【问题讨论】:
-
抱歉,您的帖子不清楚。描述与您链接到的示例图像不匹配。示例中的所有 gallery_ids 都有一个数字,但在文本中您有多个数字。您对 gallery_id 字段的具体目标是什么?
-
感谢您的回答。我的目标是:我第一次上传一些图片,插入了一些行,其中所有字段“gallery_id”的编号为“1”。当我两次上传一些图片时,会插入一些行,新插入的“gallery_id”的所有字段都有数字“2”。每次我向表中插入新行时,“gallery_id”字段都比上次插入的字段高约 +1。
-
你能添加你预期的输出吗?您是否为您的 id 使用了自动增量?
-
你好。当然,我将 auto_increment 用于“id”字段并且它有效。我编辑了主题,你能刷新一下页面看看我要做什么吗?谢谢。现在应该清除了。
-
你的代码有什么问题?你想发生什么?你的 gallery_id 应该总是 1 正确
标签: php mysql mysqli insert field