无法一次更新多行

时间:2012-10-04 09:08:42

标签: php

我有这个代码,我用它来一次更新多行,但它只让我一次更新..

你能帮我检查一下吗?我发现它没有任何问题。谢谢!

表格:

echo "<td><input type='hidden' name='att_id[$i]' value='{$rows['att_id']}' s/></td>";
echo "<td><input type='text' name='attivita_da_promuovere[$i]' value='{$rows['attivita_da_promuovere']}' /></td>";
echo "<td><input type='text'id='start_date' class='datepicker' title='D-MMM-YYYY' name='start_date[$i]' value='{$rows['start_date']}' /></td>";
echo "<td><input type='text'id='end_date' class='datepicker' title='D-MMM-YYYY' name='end_date[$i]' value='{$rows['end_date']}' /></td>";
echo "<td><input type='text' name='attivita_tip_merc[$i]' value='{$rows['attivita_tip_merc']}' /></td>";
echo "<td><input type='text' name='attivita_da_svolgere[$i]' value='{$rows['attivita_da_svolgere']}' /></td>";
echo "<td><input type='text' name='attivita_tip_personale[$i]' value='{$rows['attivita_tip_personale']}' /></td>";

查询:

$id_job=$_GET['id'];
$size = count($_POST['att_id']);
$i = 0;
while ($i < $size) {
$attivita_da_promuovere= $_POST['attivita_da_promuovere'][$i];
$start_date= $_POST['start_date'][$i];
$end_date= $_POST['end_date'][$i];
$attivita_da_svolgere = $_POST['attivita_da_svolgere'][$i];
$attivita_tip_merc = $_POST['attivita_tip_merc'][$i];
$attivita_tip_personale=$_POST['attivita_tip_personale'][$i];
$id=$_POST['att_id'][$i];


$query = "UPDATE attivita SET attivita_da_promuovere = '$attivita_da_promuovere',attivita_da_svolgere = '$attivita_da_svolgere',attivita_tip_merc = '$attivita_tip_merc',end_date = '$end_date',attivita_tip_personale = '$attivita_tip_personale',start_date = '$start_date' WHERE att_id = '$id' LIMIT 1";
$result=mysql_query($query) or die ("Error in query: $query");
++$i;

5 个答案:

答案 0 :(得分:0)

为什么要在查询中提供LIMIT 1。像

一样删除它
$query = "UPDATE attivita 
SET attivita_da_promuovere = '$attivita_da_promuovere',
attivita_da_svolgere = '$attivita_da_svolgere',
attivita_tip_merc = '$attivita_tip_merc',
end_date = '$end_date',
attivita_tip_personale = '$attivita_tip_personale',
start_date = '$start_date' WHERE att_id = '$id'";

答案 1 :(得分:0)

如果只影响一行,你唯一需要注意的就是你的WHERE子句,它意味着什么以及为什么它只能获得一行。

此外,您的查询中有一个LIMIT 1,在这种情况下,我理解的与您想要的完全相反,因此请将其删除。

新查询类似于:

  

$ query =“UPDATE attivita SET attivita_da_promuovere =   '$ attivita_da_promuovere',attivita_da_svolgere =   '$ attivita_da_svolgere',attivita_tip_merc =   '$ attivita_tip_merc',end_date ='$ end_date',attivita_tip_personale =   '$ attivita_tip_personale',start_date ='$ start_date'WHERE att_id =   '$ ID'“;

那里有'echo'块的小提示,您只需使用?>退出PHP脚本,然后键入HTML并使用<?php重新打开脚本

答案 2 :(得分:0)

你在这里犯了错误:

您放在页面上的名称是

名= attivita_da_promuovere1

名= attivita_da_promuovere2

名= attivita_da_promuovere3 ..

你尝试将这些帖子读作一个名为'attivita_da_promuovere'的数组($ _ POST ['attivita_da_promuovere'] [$ i])。我不知道怎么会有这样一个数组,因为你给他们个人名字。

你不应该这样阅读这些帖子吗?

$_POST['attivita_da_promuovere'.$i]

答案 3 :(得分:0)

$query = "UPDATE attivita SET attivita_da_promuovere = '$attivita_da_promuovere',attivita_da_svolgere = '$attivita_da_svolgere',attivita_tip_merc = '$attivita_tip_merc',end_date = '$end_date',attivita_tip_personale = '$attivita_tip_personale',start_date = '$start_date' WHERE att_id = '$id'";

在您的更新中试用此代码

答案 4 :(得分:0)

你说你的表格是foreach函数吗? 这是有道理的。

首先,您需要启动一次表单。

ex(正确的做法):

<?php 
echo "<form method='post'>";
foreach(){
    // rows here
}
echo "</form>";
?>

也许你这样做(错误的方式):

<?php 
foreach(){
    echo "<form method='post'>";
    // rows here
    echo "</form>";
}
?>