У меня есть фотогалерея и вы хотите обновить сразу несколько подписей через ввод формы. Я попытался это исследовать, но я думаю, что у меня над головой. Это то, что у меня есть до сих пор, но оно не работает.Как обновить базу данных SQL с помощью цикла foreach?
Данные сохраняются в таблице SQL, называемой «галерея». Пример строка может выглядеть следующим образом:
gallery_id(key) = some number
product_id = 500
photo = photo.jpg
caption = 'look at this picture'
Моих форма входов генерируются так:
$ SQL = mysql_query ("SELECT * FROM галереи WHERE product_id = 500");
while($row = mysql_fetch_array($sql)) { $photo=$row['photo']; $caption=$row['caption']; echo '<img src="$photo"/>'; echo '<input name="cap['.$caption.']" id="cap['.$caption.']" value="'.$caption.'" />'; }
Поэтому, как только я отправить форму я начинаю получить доступ к своим входы, как это, но я врезался в стену ..
if(isset($_POST['cap']) && is_array($_POST['cap'])) {
foreach($_POST['cap'] as $cap) {
mysql_query("UPDATE gallery
SET caption=$caption
WHERE ???????");
}
}
Я не знаю, как сказать, базу данных, где поставить эти входы, и, насколько я могу судить, вы не можете передавать более одной переменной в цикле foreach.
вы нужду передать идентификатор исходной подписи, тоже. Таким образом, ваше утверждение будет соответствовать строкам 'UPDATE gallery SET caption = $ caption WHERE gallery_id = $ gallery_id' (я также надеюсь, что вы покажете сокращенный код, иначе вы откроете себе несколько SQL-инъекций). –
Обратите внимание, что вы больше не должны использовать функции 'mysql_ *'. Весь диапазон [устарел] (http://www.php.net/manual/en/function.mysql-query.php). Он не обновлялся и не поддерживался в течение нескольких лет и существует только для обратной совместимости. Вы должны использовать методы 'mysqli_ *' или 'PDO'. –