【问题标题】:Update several mysql entries at once from PHP table从 PHP 表一次更新多个 mysql 条目
【发布时间】:2018-06-05 23:03:17
【问题描述】:

我有一个表,其中包含 mysql 数据库中的一些数据。我需要从表本身更新该信息,因此当我按下按钮提交(表在表单内)时,我需要在数据库中更新所有数据。我可以毫无问题地从数据库中获取信息,但我无法更新它!代码如下:

<table border=1 cellpadding=4 cellspacing=0 width=960px style='font-size:10px'> 
<form id='form1' name='form1' method='post' action='itself.php'>
<thead>
<tr>
<th colspan=3> People on the list </th>
<th><input type='submit' name='filtrar' id='filtrar' value='Filtrar'/></th>
<th><input type='submit' name='modificar' id='modificar' value='Modificar'/></th>
</tr>
<tr>
<th><label for='id'>ID</label></th>
<th><label for='id'>Friends</label></th>
<th><label for='id'>On the list?</label></th>
</tr>


<?
while($row = mysqli_fetch_array($result_listas, MYSQLI_BOTH))
$id= $row['id'];
{
?>
<tr>
<td><? echo "$row[id]" ?>
</td>
<td><select name='friends[<? echo "$id" ?>]' size='1' id='friends[<? echo "$id" ?>]'>
<option selected='selected'><? echo "$row[friends]" ?></option>
<option>less than 10</option>
<option>more than 10</option>   
</select>
</td>
<td><select name='onlist[<? echo "$id" ?>]' size='1' id='onlist[<? echo "$id" ?>]'>
<option selected='selected'><? echo "$row[onlist]" ?></option>
<option>SI</option>
<option>NO</option> 
</select>
</td>

<? 
$ssql_min="select min(id) as id from listas_old";
$result_min=  mysqli_query($link, $ssql_min);
$resultado_min = mysqli_fetch_array($result_min, MYSQLI_BOTH);
$ssql_max="select max(id) as id from listas_old";
$result_max=  mysqli_query($link, $ssql_max);
$resultado_max = mysqli_fetch_array($result_max, MYSQLI_BOTH);      

if(isset($_POST[modificar]))

{
for($i=$resultado_min['id']; $i<$resultado_max['id']; $i++)
            {
$sql1="UPDATE listas_old SET friends='$friends[$i]', onlist='$onlist[$i]' WHERE id='$i'";
$result1=mysqli_query($link, $sql1);
}

}
?>

【问题讨论】:

    标签: php mysql html-table


    【解决方案1】:

    OP wrote in a comment:

    为自己找到了解决方案!这就是我所做的......

    for 改成这样:

    for($i=$resultado_min['id'];
        $i<=$resultado_max['id'];
        $i++) {
        $friendsfor= $_POST['friends('.$i.')'];
        $onlistfor= $_POST['onlist('.$i.')'];
        $sql1="UPDATE listas_old SET friends='$friendsfor', anotado= '$onlistfor' WHERE id='$i'";
        } 
    

    【讨论】:

      【解决方案2】:

      看来您在更新中的引用都错了。您正在尝试将字符串(您的更新 sql)与 php 变量连接起来。但是你需要确保 php 将它们识别为变量而不是字符串。

      应该是这样的

      $sql1= "UPDATE listas_old SET friends='" . $friends[$i] . "', onlist='" . $onlist[$i] . "' WHERE id='" . $i . "'";
      

      如果您要添加 varchar 或日期或其他内容,则只需添加单引号。如果是 int,则不需要单引号。我也不确定 onlist 会做什么,或者这是否有效。

      【讨论】:

      • 我已经尝试过了,但无法正常工作。此外,我对 sql 查询使用相同的语法来显示表上的数据及其工作。 :(
      • 在你的查询中你没有添加 php 变量,所以引用的事情并不重要。您应该尝试获取更新查询并在 mysql 本身中运行它。看看这是否有效。如果确实如此,则在执行实际更新之前通过回显它们来确保您的变量具有正确的值
      • 为我自己找到了解决方案!这就是我所做的......像这样更改 for 句子: for($i=$resultado_min['id']; $i
      猜你喜欢
      • 2013-06-24
      • 2019-08-21
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2023-03-03
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多