table: test1
----------
|id |name|
----------
|46 |BOB |
----------
table: test2
------------------------
|id |name_id |job |
------------------------
|133 |46 |NOJOB |
------------------------
|134 |46 |NOJOB |
------------------------
|135 |46 |NOJOB |
------------------------
您好,我有一个问题是根据INSERT查询中的“test1.id”中的mysql_insert_id();函数生成的“test2.name_id”分别更新“test2.job”上的多行表结构如上。
我有填充的表单取决于我在“test2”表中有多少记录,条件为“WHERE name_id ='”。$ _ GET ['id']。“'”我指定了“localhost”浏览器URL地址中的/rfps/ztransposto.php?id=46“和表单将显示为上面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;
}
?>
任何人都可以指出哪些代码我弄错了?提前谢谢!
答案 0 :(得分: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;
}
?>