php致命错误“无法访问由foreach生成的空属性”

时间:2011-04-24 22:23:14

标签: php foreach

我在此代码中使用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.";
    }
}

表单由循环生成,循环使用数据库中的记录(photoid,图像和标题)填充每一行,并添加一个复选框以指示用户是否要更新标题。

<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 个答案:

答案 0 :(得分:6)

$key->$photoid替换为$key => photoid

答案 1 :(得分:2)

我认为你的意思是:

foreach($updates as $key => $photoid) {