这是我的名为Galleries的表:
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);
}
}
}
伙计们,谢谢您的帮助。
最佳答案
$mysqli = new mysqli('localhost', 'root', '', 'gracom');
$gallery_id = $mysqli->prepare('SELECT MAX(gallery_id) FROM galleries'); // returns max value
$gallery_id->execute();
$gallery_id = $gallery_id + 1; // retrieve the value and increment
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)
{
move_uploaded_file($_FILES['image']['tmp_name'][$i], $path);
}
}
关于php - 每次我发送INSERT查询时,请将+1添加到mysql数据库的字段中。插入(不更新),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/34004602/