Инструкция PDO INSERT не работает внутри счетчика

Может кто-нибудь сообщить мне, почему это заявление PDO не будет работать внутри цикла for? Я пытаюсь добавить один к позиции для каждой новой записи в базе данных. по какой-то причине это ломается. Есть идеи, почему?

редактировать

Пожалуйста, игнорируйте следующую позицию и т. Д. По другим причинам gp_position не может быть AUTO_INCREMENT и следующая позиция не всегда начинается с 1. Пожалуйста, обратите внимание на то, почему это заявление PDO не будет работать внутри цикла.

    $nextPosition = 1;
$imgID = 1;
$indb_gridID = 1;
$timesToRepeat = 33;
$indb_mem_id  = ($this->user->is_logged_in()) ? $this->user->info['id'] : 1;
for($i=1; $i<=$timesToRepeat; $i++) {

// now add the image to the grid positions
$stmt = dbpdo::$conn->prepare("INSERT INTO grid_positions SET
gp_mem_id   = :memID,
gp_g_id     = :gridID,
gp_img_id   = :imgID,
gp_position = :position");
$stmt->bindParam(':memID', $indb_mem_id, PDO::PARAM_INT);
$stmt->bindParam(':gridID', $indb_gridID, PDO::PARAM_INT);
$stmt->bindParam(':imgID', $imgID, PDO::PARAM_INT);
$stmt->bindParam(':position', $nextPosition, PDO::PARAM_INT);
$stmt->execute();

$nextPosition++;
}

1

Решение

Попробуйте этот переработанный код:

$nextPosition = 1;
$imgID = 1;
$indb_gridID = 1;
$timesToRepeat = 33;
$indb_mem_id  = ($this->user->is_logged_in()) ? $this->user->info['id'] : 1;

// prepare the statement once:
$stmt = dbpdo::$conn->prepare("INSERT INTO grid_positions SET
gp_mem_id   = :memID,
gp_g_id     = :gridID,
gp_img_id   = :imgID,
gp_position = :position");
$stmt->bindParam(':memID', $indb_mem_id, PDO::PARAM_INT);
$stmt->bindParam(':gridID', $indb_gridID, PDO::PARAM_INT);
$stmt->bindParam(':imgID', $imgID, PDO::PARAM_INT);
$stmt->bindParam(':position', $nextPosition, PDO::PARAM_INT);

for($i=1; $i<=$timesToRepeat; $i++) {

// exec statement with current values:
$stmt->execute();

$nextPosition++;
}
0

Другие решения

Других решений пока нет …

По вопросам рекламы [email protected]