无法更新数据库PHP / mysql [noob]

时间:2014-05-07 07:41:19

标签: php mysql database

我只是在通过php表单进程更新数据库时遇到了一些麻烦,到目前为止我已经尝试了各种各样的东西以使其正常工作但无济于事,所有页面似乎都在工作,除了_process .php本身;

  <?php
    /*saves the form data to the database */

    //read data passed via form
    $cabinID = $_POST['txtcabinID'];
    $cabintype = $_POST['txtCabinType'];
    $cabindesc = $_POST['txtCabinDesc'];
    $pricepern= $_POST['txtppN'];   
    $priceperw = $_POST['txtppW'];
    $photo = $_POST['txtPhoto'];

    //connect to server and database 
    include 'sqldb_connect.inc.php';

    //set up query
             $query =  "update tblCabins set
            cabinType='$cabintype' 
            cabinDescription='$cabindesc', 
            pricePerNight='$pricepern', 
            pricePerWeek='$priceperw', 
            PHOTO='$photo', 
            where cabinID ='$cabinID'"; // important

    //execute query
    $result = mysql_query($query);

    if(!$result)
    {
        mysql_close();
        exit("Query failed");
    }

    mysql_close();
    exit ("Cabin updated successfully");    
  ?>

</body>
</html>

任何人都可以在页面中看到任何突出的问题吗? 欣赏它:)

3 个答案:

答案 0 :(得分:1)

查询中缺少逗号:

 $query =  "update tblCabins set
            cabinType='$cabintype' 
                                  ^
            cabinDescription='$cabindesc', 
            pricePerNight='$pricepern', 
            pricePerWeek='$priceperw', 
            PHOTO='$photo', 
            where cabinID ='$cabinID'"; 

试试,

 $query =  "update tblCabins set
            cabinType='$cabintype',
            cabinDescription='$cabindesc', 
            pricePerNight='$pricepern', 
            pricePerWeek='$priceperw', 
            PHOTO='$photo', 
            where cabinID ='$cabinID'"; 

答案 1 :(得分:1)

你错过了一个逗号和一个逗号太多:

(重写)

$query = "UPDATE tblCabins SET
    cabinType='$cabintype', 
    cabinDescription='$cabindesc', 
    pricePerNight='$pricepern', 
    pricePerWeek='$priceperw', 
    PHOTO='$photo' 
WHERE cabinID ='$cabinID'"; // important
  • cabinType='$cabintype'后遗失一个,PHOTO='$photo',
  • 遗失一个

错误报告:

将错误报告添加到文件顶部,这将有助于生产测试。

error_reporting(E_ALL);
ini_set('display_errors', 1);

<强>脚注:

您目前的代码向SQL injection开放。使用prepared statementsPDO

mysql_*函数弃用通知:

http://www.php.net/manual/en/intro.mysql.php

从PHP 5.5.0开始,不推荐使用此扩展,不建议用于编写新代码,因为将来会删除它。相反,应使用mysqliPDO_MySQL扩展名。在选择MySQL API时,另请参阅MySQL API Overview以获得进一步的帮助。

这些功能允许您访问MySQL数据库服务器。有关MySQL的更多信息,请访问»http://www.mysql.com/

可以在»http://dev.mysql.com/doc/找到MySQL的文档。

答案 2 :(得分:1)

cabinType='$cabintype' 
        cabinDescription='$cabindesc',

你错过了一个逗号。应该是

 cabinType='$cabintype',
        cabinDescription='$cabindesc',

另外,只需注意,一旦您开始对mysql_query感到满意,我建议您将STRAIGHT跳过PDO并使用预准备语句。它使您的SQL更容易阅读,更安全:)