#php #mysql #sql
#php #mysql #sql
Вопрос:
почему это не работает..
я хочу обновить свою таблицу в базе данных, это мой код.
for ($i=0; $i <83 ; $i ) {
$link="this is test".$i;
$sql = "UPDATE tbl_gallery_images SET thumbnail_url='$link' WHERE gallery_id=1";
// Prepare statement
$stmt = $conn->prepare($sql);
// execute the query
$stmt->execute();
echo $link."<br>";
}
когда я повторяю эту ссылку, она отображается на 100% правильно, но в БД просто обновите 82 числа во всех строках, даже если они находятся в цикле.
заранее спасибо.
Комментарии:
1. Вы имели в виду обновление той же галереи —
WHERE gallery_id=1
?2. удалите
"this is test"
из вашей строки сохранения$link
3. Он обновляется до 0, а затем до 1, а затем до 2, а затем… до 82 — это последний. Чего вы ожидаете?
4. В этом случае вы не можете использовать gallery_id в условии where. Вам нужно использовать какой-нибудь другой столбец, который однозначно идентифицирует каждую строку.
5. затем используйте ‘и’ в вашем предложении where. Таким образом, ваш запрос будет содержать UPDATE tbl_gallery_images SET thumbnail_url=’$link’, ГДЕ gallery_id=1 И other_column = значение
Ответ №1:
UPDATE tbl_gallery_images SET thumbnail_url = '$link' WHERE gallery_id = 1
Как бы то ни было, этот запрос обновляет столбец thumbnail_url
во всех записях, которые имеют gallery_id = 1
. Выполнение одного и того же запроса 84 раза в цикле приводит к тому, что один и тот же набор записей обновляется снова и снова на каждой итерации с увеличением thumbnail_url
. После последней итерации все записи, где gallery_id = 1
заканчиваются на thumbnail_url = 'this is test83
.
Разумным решением было бы добавить еще один критерий в WHERE
предложение, чтобы обновлять только одну запись за итерацию. Предполагая, что у вас есть некоторый столбец integer, вызываемый id
для устранения неоднозначности записей, куда gallery_id = 1
вы обычно обращаетесь:
`UPDATE tbl_gallery_images SET thumbnail_url = '$link' WHERE gallery_id = 1 AND id = $i`