Я получаю сообщение «ошибка доступа к пустому свойству» в строке с foreach в этом коде. print_r($captions)
и print_r($updates
) показывают ожидаемые значения в каждом массиве.
$updates
- это массив отмеченных флажков, где пользователь хочет обновить подписи к фотографиям. $captions
- это массив всех заголовков из баз данных.
При обработке PHP, показанной здесь, для краткости не требуется санация данных. Коды дают ошибку с или без процедур санитарии.
if(isset($_POST['update']) && isset($_POST['caption'])){
//check whether any photo captions are marked for update
@$updates=$_POST['update'];
@$captions=$_POST['caption'];
foreach($updates as $key->$photoid){
$query="
UPDATE photo
SET caption='".$captions[$key]."'
WHERE id='".$photoid."'
LIMIT 1";
$result=query($query);
$message[]="Caption for photo # $photoid was successfully updated.";
}
}
Форма создается циклом, который заполняет каждую строку записью (фотоид, изображение и подпись) из базы данных и добавляет флажок, чтобы указать, хочет ли пользователь обновить подпись.
<tr>
<td><? echo $thisphotoid; ?>.</td>
<td><img src="<? echo '.SITE_URL.'images/banner/'.$thisfilename; ?>" /></td>
<td><textarea name="caption[]" cols="40" rows="5"><? echo $thiscaption; ?></textarea></td>
<td><input type="checkbox" name="update[]" value="<? echo $thisphotoid; ?>" /></td>
</tr>