我有两列name
varchar和area
文字
name area
abc 12a
dfg test
现在我想从我的页面更新每个文本,我将一些文本输入到从两行中提取的textarea。
<?
if(isset($_POST['submit'])) {
$i = 0;
foreach($_POST['txt'] as $textarea) {
@$val[$i] = $val[$i].$textarea;
$i++;
}
foreach($val as $value){
$q= mysql_query("UPDATE table_name SET name = '$value' WHERE `area` = '??'");
echo "Success"; }
$sql="select * from table_name";
$res=mysql_query($sql);
?>
<form name="form1" method="post" action="<?php echo $_SERVER['PHP_SELF'];?>">
<table border="1">
<thead>
<tr>
<th>NAME</th>
<th>AREA</th>
</tr>
<?php while($row=mysql_fetch_assoc($res))
{
?>
<tr>
<td><?php echo $row['name']; ?></td>
<td><textarea rows="4" cols="40" name="txt[]"><?php echo $row['area']; ?> </textarea><br/>
</td>
</tr>
<tr>
</tr>
<?php } ?>
<tr>
<td><input type="submit" name="submit" id="submit" value="Update" /></td>
</tr>
</table>
</form>
我收到了该名称,但无法在area
中更新/插入该名称。我该如何做到这一点?
答案 0 :(得分:0)
您可以在PHP的数组命名hack中嵌入实际的密钥:
<textarea name="txt[foo]">...</textarea>
<textarea name="txt[bar]">...</textarea>
允许您直接将特定表单字段与其在数据库中表示的值相关联。在你的情况下:
while($row = fetch_from_db()) {
output: <texarea name="txt[$row[id]]">$row[area]</textarea>
}
然后,提交后:
foreach($_POST['txt'] as $key => $value) {
update database : UPDATE ... SET area=value WHERE id=$key
}
请注意,您的代码容易受到sql injection attacks的攻击。</ p>
答案 1 :(得分:0)
最简单的解决方法是获取隐藏的输入字段并传递$ row [&#39; name&#39;]
<input type="hidden" name="name[]" value="<?php echo $row['name'];?>"/>
然后
if(isset($_POST['submit'])) {
$area=$_POST['txt'];
$name=$_POST['name'];
$count=count($area);
for($i=0; $i<$count; $i++)
{
if(mysql_query("UPDATE table_name SET area = '".$area[$i]."' WHERE `name` = '".$name[$i]."'"))
{
注意: - 如果您有一个id列,请使用$ row [&#39; id&#39;]隐藏输入字段并执行相同操作