使用_POST更新mysql中的信息

时间:2015-08-05 23:59:49

标签: php mysql post get sql-update

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

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

这是它使用的更新链接,并将其传递给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

1 个答案:

答案 0 :(得分:2)

您对此代码存在一些问题,您提供的代码似乎并不像您发送POST请求而是发送{{}} {1}}请求您通过网址传递它们。首先,将GET更改为$_POST

你的查询也错了。

$_GET

应该是,

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

我在代码中没有看到$sql = "UPDATE `products` SET ".implode(", ", $update)."WHERE Product_sku = '$id'"; 变量,但我确实看到了$ID变量。所以你也需要改变它。

修改1

此外,打开$id可以更轻松地进行调试。

error reporting

修改2

正如弗雷德所说,在尝试将数据从HTML传输到PHP时,你会犯错误。

产品输入中,您将名称值设置为ini_set('display_errors', 1); ini_set('display_startup_errors', 1); error_reporting(-1); ,就像使用Product输入一样。然而,在你的PHP中,Name应该是$name=$_GET['name'];

你应该采用一种熟悉的命名约定,例如camelCase,这将使得难以发现难以发现的这些错误。我亲自使用PSR编码约定。所以尽量采用一个并坚持下去。

另一件事,因为您之前从未发布过您的表单我建议您使用$name=$_GET['Name'];,但是对于某些内容(例如表单数据),您应该将其更改为$_GET作为您的表单{{ 1}}。

编辑3

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