0
table: test1
----------
|id |name|
----------
|46 |BOB |
----------

table: test2
------------------------
|id  |name_id |job     |
------------------------
|133 |46      |NOJOB   |
------------------------
|134 |46      |NOJOB   |
------------------------
|135 |46      |NOJOB   |
------------------------

您好,我有一个问题,分别基于“test2.name_id”更新“test2.job”上的多行,这是由 mysql_insert_id(); INSERT 查询中的“test1.id”函数和我的表结构产生的多于。

我的表单将取决于我在“test2”表中有多少记录,条件为“WHERE name_id = '”.$_GET['id'].“'”,并且我指定了“localhost/rfps/ ztransposto.php?id=46" 在浏览器 url 地址中,表单将显示为上面 test2 表中的内容。

问题是当我尝试更改和更新第一行和第二行时,它不会更新任何内容,因为它只会在我更改最后一行的值并更新其他两行的第一行和第二行时更新相同的值。下面是源代码:

1-更新表单页面

<?php require_once('Connections/rfps.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
  session_start();
 }
?>

<html>
<head>
</head>
<body>

<?php

$sql = "SELECT * FROM test2 WHERE name_id = '".$_GET['id']."'";

$result = mysql_query($sql) or die($sql."<br/><br/>".mysql_error());

$i = 0;

echo '<table width="50%">';
echo '<tr>';
echo '<td>ID</td>';
echo '<td>Name ID</td>';
echo '<td>Job</td>';
echo '</tr>';

echo "<form name='form_update' method='post' action='ztranspostop.php'>\n";
while ($job = mysql_fetch_array($result)) {
echo '<tr>';
echo "<td>{$job['id']}<input type='hidden' name='id[$i]' value='{$job['id']}' /></td>";
echo "<td>{$job['name_id']}<input type='hidden' name='name_id[$i]' value='{$job['name_id']}' /></td>";
echo "<td><input type='text' size='40' name='job[$i]' value='{$job['job']}' /></td>";
echo '</tr>';
++$i;
}
echo '<tr>';
echo "<td><input type='submit' value='submit' /></td>";
echo '</tr>';
echo "</form>";
echo '</table>';

?>
</body>
</html>

2-更新查询页面

<?php require_once('Connections/rfps.php'); ?>
<?php
//initialize the session
if (!isset($_SESSION)) {
  session_start();
}

$size = count($_POST['job']);

$i = 0;
while ($i < $size) {
    $job= $_POST['job'][$i];
    $name_id = $_POST['name_id'][$i];

    $query = "UPDATE test2 SET job = '$job' WHERE name_id = '$name_id'";
    mysql_query($query) or die ("Error in query: $query");
    echo "$job<br /><br /><em>Updated!</em><br /><br />";
    ++$i;
}
?>

谁能指出我弄错了代码的哪一部分?提前致谢!

4

1 回答 1

0

我认为您缺少表单中 test2.id 字段与在更新查询中使用它之间的连接。事实上,如果你包含了,你可能不需要这个WHERE name_id =子句WHERE id =。这样就完成了表单中的一行(该页面上 $i 的值)与正在更新的特定作业行(后续页面上的 $i 值)之间的关联。否则,您只会根据它们共同的属性(name_id)进行更新:-)

$i = 0;
while ($i < $size) {
    $job= $_POST['job'][$i];
    $job_id = intval($_POST['id'][$i]);

    $query = "UPDATE test2 SET job = '$job' WHERE id = '$job_id'";
    mysql_query($query) or die ("Error in query: $query");
    echo "$job<br /><br /><em>Updated!</em><br /><br />";
    ++$i;
}
?>
于 2012-07-15T05:39:45.220 回答