这是我的名为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/

10-12 07:33
查看更多