php фатальная ошибка "Невозможно получить доступ к пустому свойству", сгенерированная foreach - PullRequest
5 голосов
/ 25 апреля 2011

Я получаю сообщение «ошибка доступа к пустому свойству» в строке с 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>

Ответы [ 2 ]

7 голосов
/ 25 апреля 2011

Заменить $key->$photoid на $key => photoid

2 голосов
/ 25 апреля 2011

Я думаю, вы имеете в виду:

foreach($updates as $key => $photoid) {
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...