提交表单时,所有行都采用一个值

时间:2015-04-03 09:22:19

标签: php mysql

我是PHP的新手,由于对PHP知之甚少,我开发了一个表格来更新MySQL表的行。但问题是如果我在index.php文件中编辑一行并提交它,那么该行值将到达表的所有行。

我想更改已编辑的输入,其余输入应保持不变。

请注意,第二行预算值将在第二行预算值时添加,并将插入总输入中并保存到数据库

This is how it looks

这是index.php文件

<?php
$con=mysqli_connect("127.0.0.1","root","","ji001");
$result = mysqli_query($con,"SELECT * FROM finance")
or die("Error: ".mysqli_error($con));

while($row = mysqli_fetch_array($result))
{   $Budget = $row['Budget'];
     $Availed_in_Regions = $row['Availed_in_Regions'];


echo "<form style='width:780px' action='update2.php' method='post' class='form-group'>
id<input type='text' name='Budget' value='".$row['ID']."'>
Budget<input type='text'  name='Budget' value='".$row['Budget']."'>
Availed in Regions <input type='text' name='Availed_in_Regions' value='".$row['Availed_in_Regions']."'>
<input type='Submit'>
</form>";
}
?>

这是update2.php文件

   <?php
    mysql_connect('127.0.0.1', 'root', '') or die(mysql_error());
    mysql_select_db("ji001") or die(mysql_error());

    $ud_Budget = mysql_real_escape_string($_POST["Budget"]);
    $ud_Availed_in_Regions = mysql_real_escape_string($_POST["Availed_in_Regions"]);

    $query="UPDATE finance SET Budget = '$ud_Budget', Availed_in_Regions = '$ud_Availed_in_Regions'";


mysql_query($query)or die(mysql_error());
if(mysql_affected_rows()>=1){
    echo "<p>Record Updated<p>";
}else{
    echo "<p>Not Updated<p>";
}

?>

3 个答案:

答案 0 :(得分:0)

您没有在$ query查询中使用where子句。 它应该是这样的

$query="UPDATE finance SET Budget = '$ud_Budget', Availed_in_Regions = '$ud_Availed_in_Regions' WHERE id = '$id'";

您还应该在表单中传递此ID,还要更改包含id ...

的输入字段的名称

答案 1 :(得分:0)

因为您实际上SELECT表格中的每一行。

UPDATE finance SET Budget = '$ud_Budget', Availed_in_Regions = '$ud_Availed_in_Regions';

如果您想要更新表格中的行,则查询中没有WHERE子句(link)您必须使用它。

$id传递给update2.php并改为使用此查询:

UPDATE finance SET Budget = '$ud_Budget', Availed_in_Regions = '$ud_Availed_in_Regions' WHERE id = '$id';

答案 2 :(得分:0)

首先,您的表单具有拼写错误ID和名称属性相同的名称,即名称=&#39;预算&#39;

<强>的index.php

echo "<form style='width:780px' action='update2.php' method='post' class='form-group'>";

while($row = mysqli_fetch_array($result))
{  

  $Budget = $row['Budget'];
  $Availed_in_Regions = $row['Availed_in_Regions'];

 echo "id<input type='text' name='id[]' value='".$row['ID']."'>

  Budget<input type='text'  name='Budget[]' value='".$row['Budget']."'>

  Availed in Regions <input type='text' name='Availed_in_Regions[]' value='".$row['Availed_in_Regions']."'>";

}

echo "<input type='Submit' value='Submit'></form>";

您需要从

更改更新查询

<强> update2.php

$ud_id = $_POST["id"];
$ud_Budget = array_map('mysql_real_escape_string', $_POST['Budget']);
$ud_Availed_in_Regions = array_map('mysql_real_escape_string',$_POST["Availed_in_Regions"]);

foreach($ud_id as $key => $value){
    $query = "UPDATE finance SET Budget = '$ud_Budget[$key]', Availed_in_Regions = '$ud_Availed_in_Regions[$key]' where ID = $value";
    mysql_query($query)or die(mysql_error());
   if(mysql_affected_rows()>=1){
      echo "<p>Record Updated<p>";
   }else{
      echo "<p>Not Updated<p>";
   }
}

这里我添加了where条件,这是确定需要更新哪一行所需的条件

  

注意:您正在使用 mysqli _ 在index.php中混合使用两个API,在update2.php中混合使用 mysql