我在这段代码中使用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.";
}
}
Run Code Online (Sandbox Code Playgroud)
表单由循环生成,该循环使用数据库中的记录(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>
Run Code Online (Sandbox Code Playgroud)