i have a table called horse, i would like to create a form to edit the horse_name and horse_height, but the data cannot be updated, it turns out there is a problem with the update query, when i print the query to show the values, the horse_name value is equal to horse_height
<body bgcolor="#009933">
<?php
include("connection.php");
$conn = oci_connect($UName,$PWord,$DB);
if(empty($_POST["check"]))
{
$query="SELECT * FROM horse ORDER BY horse_name";
$stmt = oci_parse($conn, $query);
oci_execute($stmt);
?>
<center> <font face="Arial" size="3"><b>Horse Details</b></font>
</center>
<form method="post" action="multiplehorsemodify.php">
<table border="1" align="center">
<tr>
<th>Horse ID</th>
<th>Name</th>
<th>Height</th>
<th>Edit?</th>
</tr>
<?php
while($row = oci_fetch_array ($stmt))
{
?>
<tr>
<td><?php echo $row["HORSE_ID"]; ?></td>
<td align="center">
<input type="text" size="24"
name="<?php echo $row["HORSE_ID"]; ?>"
value="<?php echo $row["HORSE_NAME"]; ?>"></td>
<td align="center">
<input type="text" size="5"
name="<?php echo $row["HORSE_ID"]; ?>"
value="<?php echo $row["HORSE_HEIGHT"]; ?>"></td>
<td align="center">
<input type="checkbox" name="check[]" value="<?php echo $row["HORSE_ID"]; ?>">
</td>
</tr>
<?php
}
?>
</table>
<center>
<input type="submit"
value="Update Selected Titles" />
</center>
</form>
<?php
oci_free_statement($stmt);
}
else
{
foreach($_POST["check"] as $horse_id)
{
echo $horse_id;
$query = "UPDATE horse set horse_name = ".$_POST[$horse_id]."horse_height = ".$_POST[$horse_id]." WHERE horse_id = '".$horse_id."'";
echo $query;
$stmt = oci_parse($conn,$query);
oci_execute($stmt);
header("location: multiplehorsemodify.php");
}
}
oci_close($conn);
?>
</body>
您的两个表单字段都具有相同的名称($ row [“ HORSE_ID”]),这会引起问题!
Well, you set name
and height
both to $_POST[$horse_id]
in your query:
$query = "UPDATE horse set horse_name = ".$_POST[$horse_id]."horse_height = ".$_POST[$horse_id]." WHERE horse_id = '".$horse_id."'";
And you even give the input elements the same name:
name="<?php echo $row["HORSE_ID"]; ?>"
The name of an input element becomes the key of the $_POST
array on the PHP side. So give the input fields the right names, eg:
<input type="text" size="24"
name="horse_name[<?php echo $row["HORSE_ID"]; ?>]"
value="<?php echo $row["HORSE_NAME"]; ?>">
<input type="text" size="5"
name="horse_height[<?php echo $row["HORSE_ID"]; ?>]"
value="<?php echo $row["HORSE_HEIGHT"]; ?>">
and change your query to
"UPDATE horse set horse_name = ".mysql_real_escape($_POST['horse_name'][$horse_id])
."horse_height = ".mysql_real_escape($_POST['horse_name'][$horse_id])
." WHERE horse_id = '".$horse_id."'"
<input type="text" size="24"
name="HorseName"
id="name-<?=row["HORSE_ID"] ?>"
value="<?php echo $row["HORSE_NAME"]; ?>"></td>
<td align="center">
<input type="text" size="5"
name="HorseHeight"
id="height-<?=row["HORSE_ID"] ?>"
value="<?php echo $row["HORSE_HEIGHT"]; ?>"></td>
<td align="center">
This way, you can still use the id to make the checkboxes for the particular horse unique
UPDATE:
Go ahead and do it like this for each horse:
<input type="text" size="24" name="HorseName" value="<?= $row["HORSE_NAME"] ?>" />
<input type="text" size="5" name="HorseHeight"value="<?= $row["HORSE_HEIGHT"]; ?>" />
<input type="hidden" name="HORSE_ID" value="<?= $row["HORSE_ID"] ?>" />
Then your php and query can look like this:
$HORSE_NAME = $_POST['HORSE_NAME'];
$HORSE_HEIGHT = $_POST['HORSE_HEIGHT'];
$HORSE_ID = $_POST['HORSE_ID'];
"UPDATE table_name SET HORSE_NAME = $HORSE_NAME, HORSE_HEIGHT=$HORSE_HEIGHT WHERE HORSE_ID = $HORSE_ID"
The technical post webpages of this site follow the CC BY-SA 4.0 protocol. If you need to reprint, please indicate the site URL or the original address.Any question please contact:yoyou2525@163.com.