获取行数据并更新textarea以插入mysql

时间:2014-12-17 19:59:31

标签: php mysql

我有两列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中更新/插入该名称。我该如何做到这一点?

2 个答案:

答案 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;]隐藏输入字段并执行相同操作