저는 PHP와 SQL에 매우 익숙합니다. 학교 과제를 위해 사용자가 고객 데이터를 업데이트 할 수있는 양식을 만들어야합니다. 그러나 업데이트 기능은 데이터 세트의 마지막 ID로 고객을 업데이트 만한다는 것을 알았습니다. 예를 들어 데이터 집합에 4 명의 고객이있는 경우 나는 고객 ID를 드롭 다운 목록으로 사용했습니다. id, 1 ~ 3을 선택하면 0 행이 업데이트됩니다. id, 4를 선택할 때만 작동합니다. 따라서 4 번째 버전 만 업데이트 할 수 있습니다. 누군가 내 코드를 살펴보고 문제가 무엇인지, 해결 방법을 알려 줄 수 있습니까? 고맙습니다!이 mysqli prepare 문을 어떻게 수정해야합니까?
<div>
<form method="post" action="updatecustomer.php">
<fieldset>
<legend>Update Existing Customer</legend>
<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>
<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>
</fieldset>
<input type="submit" name="update" value="Update Customer">
<input type="submit" name="delete" value="Delete Customer">
</div>
당신은 내가이 문제 의심 ... 질문에서 사용자 이름과 암호를 제거 –
을 할 수 있습니다 만이 할 수있는 ' 'customer_id' 컬럼을 한 번만 가져오고'$ customer_id' 변수를 한 번만 바인딩 할 수 있도록 코드를 변경하려면 해를 끼치십시오 (:-)). – nurdglaw
'bind_param()'메소드에서, 첫 번째 자리 표시자를 고객 ID로 바인딩합니다. 실제로는 forename입니다. 마지막에 customer_id를 바인드해야합니다. –