Php 如何更新选定行的数据?
我正在学习PHP、html和sql。我正在尝试创建一个表单,允许用户更新现有客户的数据。我想知道我的代码出了什么问题,因为每次我试图对现有客户进行更改时,更改都会反映在数据集的第一个客户上。例如,当我更改客户ID 14的数据时,更改显示在客户ID 1中。客户ID 14仍然保留旧数据。这是我的密码。有人能给我一些修理的建议吗?我花了几个小时在这上面,但我不知道我错过了什么。非常感谢Php 如何更新选定行的数据?,php,sql,database,mysqli,sql-update,Php,Sql,Database,Mysqli,Sql Update,我正在学习PHP、html和sql。我正在尝试创建一个表单,允许用户更新现有客户的数据。我想知道我的代码出了什么问题,因为每次我试图对现有客户进行更改时,更改都会反映在数据集的第一个客户上。例如,当我更改客户ID 14的数据时,更改显示在客户ID 1中。客户ID 14仍然保留旧数据。这是我的密码。有人能给我一些修理的建议吗?我花了几个小时在这上面,但我不知道我错过了什么。非常感谢 <div> <form method="post" action="upd
<div>
<form method="post" action="updatecustomer.php">
<fieldset>
<legend>Update Existing Customer</legend>
<li>First Name: <input type="text" name="fName"> Last Name: <input type="text" name="lName"</li>
<li>Email Address: <input type="text" name="email"></li>
<li>Phone Number: <input type="text" name="phone_number"></li>
<li>Street Number: <input type="text" name="address_no"> Street Line 1: <input type="text" name="address_street1"></li>
<li>Street Line 2 (Apt or Unit Number): <input type="text" name="address_street2"></li>
<li>City: <input type="text" name="address_city"> State: <input type="text" name="address_state"> Zip: <input type="text" name="address_zip"> </li>
<li>Customer ID:
<select name="customer_id">
<?php
if(!($stmt = $mysqli->prepare("SELECT customer_id, customer_id FROM customer"))){
echo "Prepare failed: " . $stmt->errno . " " . $stmt->error;
}
if(!$stmt->execute()){
echo "Execute failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if(!$stmt->bind_result($customer_id, $customer_id)){
echo "Bind failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
while($stmt->fetch()){
echo '<option value=" '. $customer_id . ' "> ' . $customer_id . '</option>\n';
}
$stmt->close();
?>
</select>
</li>
</fieldset>
<input type="submit" name="update" value="Update Customer">
</div>
这是main.php文件中代码的一部分
<div>
<form method="post" action="updatecustomer.php">
<fieldset>
<legend>Update Existing Customer</legend>
<li>First Name: <input type="text" name="fName"> Last Name: <input type="text" name="lName"</li>
<li>Email Address: <input type="text" name="email"></li>
<li>Phone Number: <input type="text" name="phone_number"></li>
<li>Street Number: <input type="text" name="address_no"> Street Line 1: <input type="text" name="address_street1"></li>
<li>Street Line 2 (Apt or Unit Number): <input type="text" name="address_street2"></li>
<li>City: <input type="text" name="address_city"> State: <input type="text" name="address_state"> Zip: <input type="text" name="address_zip"> </li>
<li>Customer ID:
<select name="customer_id">
<?php
if(!($stmt = $mysqli->prepare("SELECT customer_id, customer_id FROM customer"))){
echo "Prepare failed: " . $stmt->errno . " " . $stmt->error;
}
if(!$stmt->execute()){
echo "Execute failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if(!$stmt->bind_result($customer_id, $customer_id)){
echo "Bind failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
while($stmt->fetch()){
echo '<option value=" '. $customer_id . ' "> ' . $customer_id . '</option>\n';
}
$stmt->close();
?>
</select>
</li>
</fieldset>
<input type="submit" name="update" value="Update Customer">
</div>
不确定,但请尝试删除此处的空格第一个值='$客户识别码。”因为这将向您发送一个字符串类型的值,如string4 14。接下来我会选择intval$\u POST['customer\u id'.为什么在同一个查询中要获取两次customer\u id?从…中选择客户id。。。已经足够了。在示例中,customer_id变量应该包含要修改的客户的id 14,但在您的示例中,它似乎包含另一个id 1。请确保将正确的客户id传递给您的查询。@eternay:我对php和mysqli非常陌生。你介意给我更多关于如何将正确的客户id传递给我的查询的详细信息吗?谢谢看起来您做得很正确:您通过表单submit传递它,并使用selecthtml元素。然后通过bind_param方法将其返回到updatecustomer.php中。您的更新查询似乎正确,我看不出问题所在,对不起。
<div>
<form method="post" action="updatecustomer.php">
<fieldset>
<legend>Update Existing Customer</legend>
<li>First Name: <input type="text" name="fName"> Last Name: <input type="text" name="lName"</li>
<li>Email Address: <input type="text" name="email"></li>
<li>Phone Number: <input type="text" name="phone_number"></li>
<li>Street Number: <input type="text" name="address_no"> Street Line 1: <input type="text" name="address_street1"></li>
<li>Street Line 2 (Apt or Unit Number): <input type="text" name="address_street2"></li>
<li>City: <input type="text" name="address_city"> State: <input type="text" name="address_state"> Zip: <input type="text" name="address_zip"> </li>
<li>Customer ID:
<select name="customer_id">
<?php
if(!($stmt = $mysqli->prepare("SELECT customer_id, customer_id FROM customer"))){
echo "Prepare failed: " . $stmt->errno . " " . $stmt->error;
}
if(!$stmt->execute()){
echo "Execute failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
if(!$stmt->bind_result($customer_id, $customer_id)){
echo "Bind failed: " . $mysqli->connect_errno . " " . $mysqli->connect_error;
}
while($stmt->fetch()){
echo '<option value=" '. $customer_id . ' "> ' . $customer_id . '</option>\n';
}
$stmt->close();
?>
</select>
</li>
</fieldset>
<input type="submit" name="update" value="Update Customer">
</div>