数据库不会更新,但不会出现错误。 MySQL和PHP

时间:2015-04-09 04:40:23

标签: php mysql

我为朋友制作了一个网站,基本上我有15个可编辑的字段,具体取决于用户类型。基本上我的代码是回显到该字段的行,但是当我去更改它并更新数据库时没有任何反应。我没有收到任何错误消息,因此我认为这与我的条件陈述有关。我的功能很好,我的查询似乎并不像我一样。

<?php
//end of function
}

// connect to the database
$server = 'localhost';
$user = 'root';
$pass = '';
$database = 'bubbles';

//Connect to the database
$connection = mysql_connect($server, $user, $pass) or die ("Could not connect to server ... \n" . mysql_error ());

//Select the database name
$select = mysql_select_db($database) or die ("Could not connect to database ... \n" . mysql_error ());

// check if the form has been submitted. If it has, process the form and save it to the database
if ($_SERVER['REQUEST_METHOD'] === 'POST')
{ 

    // confirm that the 'id' value is a valid integer before getting the form data
    if (is_numeric($_POST['id']))
    {

        //Get form data to make sure it's valid
        $id = $_POST["id"];
        $name = mysql_real_escape_string(htmlspecialchars($_POST['name']));
        $dueDate = mysql_real_escape_string(htmlspecialchars($_POST['dueDate']));
        $numOfPages = mysql_real_escape_string(htmlspecialchars($_POST['numOfPages']));
        $numOfCopies = mysql_real_escape_string(htmlspecialchars($_POST['numOfCopies']));
        $paperSize = mysql_real_escape_string(htmlspecialchars($_POST['paperSize']));
        $paperColor = mysql_real_escape_string(htmlspecialchars($_POST['paperColor']));
        $weight = mysql_real_escape_string(htmlspecialchars($_POST['weight']));
        $finishing = mysql_real_escape_string(htmlspecialchars($_POST['finishing']));
        $paymentMethod = mysql_real_escape_string(htmlspecialchars($_POST['paymentMethod']));
        $printColor = mysql_real_escape_string(htmlspecialchars($_POST['printColor']));
        $status = mysql_real_escape_string(htmlspecialchars($_POST['status']));
        $comment = mysql_real_escape_string(htmlspecialchars($_POST['comment']));

        // check that firstname/lastname fields are both filled in
        if ($name == '' || $dueDate == '' || $numOfPages == '' || $numOfCopies == '' || $comment == '')
        {
            // generate error message
            $error = 'Please fill in all required fields!';

            //error, display form
            displayForm($id,
                       $name,
                       $dueDate,
                       $numOfPages,
                       $numOfCopies,
                       $paperSize,
                       $paperColor,
                       $weight,
                       $finishing,
                       $paymentMethod,
                       $printColor,
                       $comment,
                       $status,
                       $error);
        }
        else
        {

            //Insert form data into the database or die if there is an error
        print $sql;

        $sql = ("UPDATE orders SET `name` = '".$name."',
                                   due_date = '".$dueDate."',
                                   numOfPages = '".$numOfPages."',
                                   numOfCopies = '".$numOfCopies."',
                                   paper_size = '".$paperSize."',
                                   paper_color = '".$paperColor."',
                                   weight = '".$weight."',
                                   finishing = '".$finishing."',
                                   payment_method = '".$paymentMethod."',
                                   color = '".$printColor."',
                                   comments = '".$comment."',
                                  `status` = '".$status."' WHERE id = '".$id."'");

        $result = mysql_query($sql) or die (mysql_error());

            // once saved, redirect back to the view page
            header("Location: http://localhost/Bubbles/view-orders.php"); 
        }
    }
    else
    {
        // if the 'id' isn't valid, display an error
        echo 'Error!';
    }
}
else
{
    // if the form hasn't been submitted, get the data from the db and display the form

    // get the 'id' value from the URL (if it exists), making sure that it is valid 
    if (isset($_GET['id']) && is_numeric($_GET['id']) && $_GET['id'] > 0)
    {
        // query db
        $id = $_GET['id'];
        $result = mysql_query("SELECT * FROM orders WHERE id = '$id'") or die(mysql_error()); 
        $row = mysql_fetch_array($result);

        // check that the 'id' matches up with a row in the databse
        if($row)
        {

            // get data from db
            $id = $row['id'];
            $name = $row['name'];
            $dueDate = $row['due_date'];
            $numOfPages = $row['numOfPages'];
            $numOfCopies = $row['numOfCopies'];
            $paperSize = $row['paper_size'];
            $paperColor = $row['paper_color'];
            $weight = $row['weight'];
            $finishing = $row['finishing'];
            $paymentMethod = $row['payment_method'];
            $printColor = $row['color'];
            $status = $row['status'];
            $comment = $row['comments'];

            // show form
            displayForm($id,
                       $name,
                       $dueDate,
                       $numOfPages,
                       $numOfCopies,
                       $paperSize,
                       $paperColor,
                       $weight,
                       $finishing,
                       $paymentMethod,
                       $printColor,
                       $comment,
                       $status,
                       '');
        }
        else
        {
            // if no match, display result
            echo "No results!";
        }
    }
    else
    {
        // if the 'id' in the URL isn't valid, or if there is no 'id' value, display an error
        echo 'Error!';
    }
}
?>

已更新为HTML

 <html>
 <head>
 </head>
 <body>
 <form action"" method="post">
    <input type="hidden" name="id" value="<?php echo $id; ?>"/>
    <div class="floatLeft">
                    <p>Name:                            <br /> <input type="text" name="name" value="<?php echo $name; ?>"/></p>
                    <p>Due Date (ex: yyyy-mm-dd):       <br /> <input type="datetime" name="dueDate" value="<?php echo $dueDate; ?>" /></p>
                    <p># of Pages                       <br /> <input type="number" name="numOfPages" value="<?php echo $numOfPages; ?>"/></p>
                    <p># of Copies                      <br /> <input type="number" name="numOfCopies" value="<?php echo $numOfCopies; ?>"/></p>
                </div>
                <div class="floatLeft"> 
                    <p>Paper Size<br /> 
                    <select name = "paperSize" value="<?php echo $paperSize; ?>">
                        <option value="8.5 x 11in">8.5 x 11 inches</option>
                        <option value="8.5 x 14in">8.5 x 14 inches</option>
                        <option value="11 x 17in">11 x 17 inches</option>
                    </select>           
                    </p>
                    <p>Paper Color<br /> 
                    <select name = "paperColor" value="<?php echo $paperColor; ?>">
                        <option value = "pulsar pink">Pulsar Pink</option>
                        <option value = "fireball fuchsia">Fireball Fuchsia</option>
                        <option value = "plasma pink">Plasma Pink</option>
                        <option value = "re-entry red">Re-entry Red</option>
                        <option value = "rocket red">Rocket Red</option>
                        <option value = "cosmic orange">Cosmic Orange</option>
                        <option value = "galaxy gold">Galaxy Gold</option>
                        <option value = "solar yellow">Solar Yellow</option>
                        <option value = "venus violet">Venus Violet</option>
                        <option value = "planetary purple">Planetary Purple</option>
                        <option value = "celestial blue">Celestial Blue</option>
                        <option value = "lunar blue">Lunar Blue</option>
                        <option value = "gamma green">Gamma Green</option>
                        <option value = "martian green">Martian Green</option>
                        <option value = "terra green">Terra Green</option>
                        <option value = "lift-off lemmon">Lift-off Lemon</option>
                    </select>           
                    </p>
                    <p>Weight<br/> 
                    <select name = "weight" value="<?php echo $weight; ?>">
                    <option value="20lbs">20lbs</option>
                    <option value="60lbs">60lbs</option>
                    <option value="65lbs">65lbs</option>
                    </select>           
                    </p>
                    <p>Finishing<br /> 
                <select name = "finishing" value="<?php echo $finishing; ?>">
                    <option value="none">None</option>
                    <option value="cutting">Cutting</option>
                    <option value="folding">Folding</option>
                    <option value="quaters">Quaters</option>
                    <option value="binding">Bindings</option>
                </select>           
                </p>
                <p>Payment method<br /> 
                <select name = "paymentMethod" value="<?php echo $paymentMethod; ?>">
                    <option value="Cash">Cash</option>
                    <option value="Credit">Credit</option>
                    <option value="Check">Check</option>
                    <option value="Wilscard">Wilscard</option>
                </select>           
                </p>
                <p>Print BW/C<br /> 
                <select name = "printColor" value="<?php echo $printColor; ?>">
                    <option value="Black">Black</option>
                    <option value="White">White</option>
                    <option value="Color">Color</option>
                </select>
                </p>            
                </p>
                </div>
                <div class="floatLeft">
                <p>Status<br /> 
                <select name = "status" value="<?php echo $row['status']; ?>">
                    <option value="Recieved">Received</option>
                    <option value="In Progress">In Progress</option>
                    <option value="Completed">Completed</option>
                </select>   
                <p>Comment (Cannot exceed 200 characters):<br />
                <textarea name="comment" value="<?php echo $comment; ?>"></textarea><br />
                </p>
                <input type="submit" value="Edit Order" />
 </div>
 </body>
 </html> 

更新:我修复了代码,感谢所有人的帮助,但我的错误是,当我检查空字段时,评论框中没有任何内容,所以它认为所有字段都是空的,而实际上它们并非如此#39;吨。我使用此代码更新了字段检查,现在工作正常。

我更新了if语句:

if ($name == '' || $dueDate == '' || $numOfPages == '' || $numOfCopies == '' || $comment == '')

对此:

if ($name == '' || $dueDate == '' || $numOfPages == '' || $numOfCopies == '')

3 个答案:

答案 0 :(得分:0)

在$ sql变量中创建查询后,您似乎没有运行查询。您将要像以后在代码中那样执行查询:

$result = mysql_query($sql) or die(mysql_error());

这将在成功时返回true或在失败时返回false(并且死亡)。

答案 1 :(得分:0)

如果您执行 UPDATE sql语句,应该会给您一些错误(因为您忘记了 SET )。但是,您没有执行它。解决该问题后,您需要将 UPDATE 语句更改为

$sql = "UPDATE orders 
SET 
    `name` = '".$name."',
    due_date = '".$dueDate."',
    numOfPages = '".$numOfPages."',
    numOfCopies = '".$numOfCopies."',
    paper_size = '".$paperSize."',
    paper_color = '".$paperColor."',
    weight = '".$weight."',
    finishing = '".$finishing."',
    payment_method = '".$paymentMethod."',
    color = '".$printColor."',
    comments = '".$comment."',
    `status` = '".$status."'
WHERE
    id = '".$id."'";

参考:https://dev.mysql.com/doc/refman/5.0/en/update.html

注意:我已转发namestatus列,因为它们是保留字

答案 2 :(得分:0)

使用此查询可以解决您的问题:

 $sql = "UPDATE orders set name ='".$name."' set due_date = '".$dueDate."' set numOfPages = '".$numOfPages."' set numOfCopies = '".$numOfCopies."' set paper_size = '".$paperSize."' set paper_color = '".$paperColor."' set weight = '".$weight."' set finishing = '".$finishing."' set payment_method = '".$paymentMethod."' set color = '".$printColor."' set comments = '".$comment."' set status = '".$status."' WHERE id = '".$id."' ";