使用 _POST 更新 mysql 中的信息

Update info in mysql using _POST

我有这段代码,它除了添加到我的数据库中之外什么都不做,并且只添加了商品盎司和零售价。关于我哪里出错的任何想法?

--update.php---

<?php

        session_start(); // start session cookies
        require("Login.class.php"); // pull in file
        $login = new Login; // create object login

        $login->authorize(); // make user login
?>




<style type="text/css">
        body {background-color:#42520e; color: #f0cb01;

        }
        th {background: URL(http://www.athenahealth.com/_img/boxes/carousel_bg.png);}
        p {color:blue;}
        a:link {color: #f0cb01; text-decoration: underline; }
        a:active {color: #f0cb01; text-decoration: underline; }
        a:visited {color: #f0cb01; text-decoration: underline; }
        a:hover {color: #f0cb01; text-decoration: none; }
</style>

<?php
        $retail=$_REQUEST['retail'];
        $id=$_REQUEST['id'];
        $name=$_REQUEST['name'];
        $upc=$_REQUEST['upc'];
        $ounces=$_REQUEST['ounces'];
        define("HOST", "localhost");

        $retail=$_REQUEST['retail'];
        $id=$_REQUEST['id'];
        $name=$_REQUEST['name'];
        $upc=$_REQUEST['upc'];
        $ounces=$_REQUEST['ounces'];


?>
Admin Panel to Update Keywords
<hr>

    <table>
            <tr><td valign="top"><br /><br />
            <td>    
                    Your are editing information for Product #: <b><? echo $_REQUEST['id']; ?></b>
                    <form method="post" action="update_ac.php">
                            <table>         <tr><br /></tr>
                                    <tr><td>  Product #:  </td><td> <input type="text" name="id" id="id" value="<? echo $_REQUEST['id']; ?>">* Enter Keyword as it currently appears<br></td></tr>
                                    <tr><td> Name: </td><td><input type="text" name="name" id="name" value="<? echo $_REQUEST['name']; ?>">* Enter New Information<br></td></tr>
                                    <tr><td> Suggested Retail:</td><td> <input type="text" name="retail" id="retail" value="<? echo $_REQUEST['retail']; ?>">* New Phone Number<br></td></tr>
                                    <tr><td> Ounces: </td><td> <input type="text" name="ounces" id="ounces" value="<? echo $_REQUEST['ounces']; ?>">* Enter new block description here. <br></td></tr>
                                    <tr><td> UPC: </td><td> <input type="text" name="upc" id="upc" value="<? echo $_REQUEST['upc']; ?>">* Enter new block description here. <br></td></tr>

                                    <tr><td> </td><td align="left"> <input type="submit" name="submit" value="Submit Data"></td></tr>
                            </table>
                    </form>
            </td></tr>
    </table>                <br />
<a href="index.php">Add Keyword</a> | <a href="../admin">Back to search form</a> | 


<?php 
       echo '<pre>'; 
        print($retail); 
        echo '</pre>'; 
?> 




<a href="index.php?action=clear_login">logout</a>
</body>

这是它使用的更新 link,并将其传递给 update_ac.php

 <?php

    session_start(); // start session cookies
    require("Login.class.php"); // pull in file
    $login = new Login; // create object login

    $login->authorize(); // make user login
    ?>

<style type="text/css">
        body {background-color:#42520e; color: #f0cb01;

        }
        th {background: URL(http://www.athenahealth.com/_img/boxes/carousel_bg.png);}
        p {color:blue;}
        a:link {color: #f0cb01; text-decoration: underline; }
        a:active {color: #f0cb01; text-decoration: underline; }
        a:visited {color: #f0cb01; text-decoration: underline; }
        a:hover {color: #f0cb01; text-decoration: none; }
</style>

<?php
        $retail=$_REQUEST['retail'];
        $id=$_REQUEST['id'];
        $name=$_REQUEST['name'];
        $upc=$_REQUEST['upc'];
        $ounces=$_REQUEST['ounces'];


        define("HOST", "localhost");

        $retail=$_REQUEST['retail'];
        $id=$_REQUEST['id'];
        $name=$_REQUEST['name'];
        $upc=$_REQUEST['upc'];
        $ounces=$_REQUEST['ounces'];


        // Database user
        define("DBUSER", "root");

        // Database password
        define("PASS", "Password!");

        // Database name
        define("DB", "SnyderLanceSku");

        ############## Make the mysql connection ###########

        $conn = mysql_connect(HOST, DBUSER, PASS) or  die('Could not connect !<br />Please contact the site\'s administrator.');

        $db = mysql_select_db(DB) or  die('Could not connect to database !<br />Please contact the site\'s administrator.');

        mysql_query("UPDATE products SET UPC='$upc', Name='$name', Item_Ounces='$ounces' WHERE UPC='$upc' ") or die (mysql_error());  
?>
<table>
        <tr><td valign="top"><br /><br />
        <td>    
                <table>  <tr><b>Data Updated Successfully</b></tr>       
                        <tr><td>  Keyword:  </td><td><? echo $id; ?><br></td></tr>
                        <tr><td> Block?: </td><td><? echo $name; ?><br></td></tr>
                        <tr><td> Phone #:</td><td><?php echo $upc; ?><br> </td></tr>
                        <tr><td> Reason: </td><td><? echo $retail; ?></td></tr>
                        <tr><td> Reason: </td><td><? echo $ounces; ?></td></tr>

                </table>
        </form>
        </td></tr>
</table>

<a href="./">Go Back</a>

我不太确定在哪里看这里...感谢任何帮助。

编辑:

这是两个脚本。它几乎可以正常工作。现在唯一的问题是它没有更新正确的行。它添加一个新行而不是更新 id 或者在这种情况下更新 UPC

您的这段代码有一些问题,从您提供的代码看来,您发送的似乎不是 POST 请求,而是发送 GET 请求您正在通过 URL 传递它们。所以首先,将 $_POST 更改为 $_GET

你的查询也是错误的。

$sql = "UPDATE `products` SET ".implode(", ", $update)."WHERE Product_sku = '$ID'";

应该是,

$sql = "UPDATE `products` SET ".implode(", ", $update)."WHERE Product_sku = '$id'";

我在你的代码中没有看到 $ID 变量,但我确实看到了 $id 变量。所以你也需要改变它。

编辑 1

此外,打开 error reporting 使调试更容易。

ini_set('display_errors', 1);
ini_set('display_startup_errors', 1);
error_reporting(-1);

编辑 2

正如 Fred 所说,您在尝试从 HTML 获取数据到 PHP 时输入错误。

在您的 product 输入中,您将名称值设置为 Product,就像您对 Name 输入所做的一样。然而,在您的 PHP 中,您却在 $name=$_GET['name']; 而它应该是 $name=$_GET['Name'];

您应该采用熟悉的命名约定,例如驼峰式命名,这将使这些难以发现的错误更难出现。我个人使用 PSR 编码约定。所以尝试采用一个并坚持下去。

另一件事,因为你之前从未发布过你的表单我建议你使用 $_GET,但是对于某些事情(例如表单数据)你应该将它改回 $_POST 作为你的表单method="post".

编辑 3

您还应该养成检查变量是否实际包含值并正确设置的习惯,这称为验证。我会亲自检查是否已按下提交按钮(if (isset($_POST['yourSubmitButtonNameValue'])) 然后验证该 if 语句中的其余字段。这样,您就知道您添加到数据库中的输入是有效的。