Php 如何更新选定行的数据?

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

我正在学习PHP、html和sql。我正在尝试创建一个表单,允许用户更新现有客户的数据。我想知道我的代码出了什么问题,因为每次我试图对现有客户进行更改时,更改都会反映在数据集的第一个客户上。例如,当我更改客户ID 14的数据时,更改显示在客户ID 1中。客户ID 14仍然保留旧数据。这是我的密码。有人能给我一些修理的建议吗?我花了几个小时在这上面,但我不知道我错过了什么。非常感谢

<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>