查看完整版本: delete 語法問題
頁: [1]

mood5 發表於 2015-12-19 11:05 AM

delete 語法問題

本帖最後由 mood5 於 2015-12-19 11:05 AM 編輯

從訂單詳細內容要執行 刪除按鈕卻發生錯誤,請問是哪裡語法有問題@_@?

<?php
        header("Content-Type: text/html; charset=utf-8");
        include("connsql.php");  //含入連結資料庫檔案
        $seldb = @mysql_select_db("orderdrink");  //連結資料庫
        if (!$seldb) die("資料庫選擇失敗!");
        
        
        if (isset($_GET["update"])) {
                $order = $_GET["update"];
                $sql_query = "UPDATE `order` SET `finish`=1 WHERE `orderid`='" . $order . "'";
                $result = mysql_query($sql_query);
                header("Location: index.php");
        }
        

        $row_detail = array();
        $order = $_GET["order"];
        $sql_query = "SELECT * FROM `order` WHERE `orderid`='" . $order . "'";
        $result = mysql_query($sql_query);
        $numorder = 0;
        $numorder = mysql_num_rows($result);
        if($numorder>0) {
                $row_order = mysql_fetch_array($result, MYSQL_ASSOC);
                $sql_query = "SELECT * FROM `category` WHERE `categoryid`='" . $order . "'";
                $result = mysql_query($sql_query);
                $numdetail = mysql_num_rows($result);
                $i = 0;
                while($row_detail[$i] = mysql_fetch_array($result, MYSQL_ASSOC)) {
                        $i++;
                }
        }
?>



<!doctype html>
<html>
<head>
<meta charset="utf-8">
<meta name="viewport" content="user-scalable=yes, maximum-scale=1, minimum-scale=1, width=device-width" />
<title>雲端訂購系統</title>
<link href="jquery-mobile/jquery.mobile-1.0.min.css" rel="stylesheet" type="text/css">
<script src="jquery-mobile/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="jquery-mobile/jquery.mobile-1.0.min.js" type="text/javascript"></script>
<style type="text/css">
        .subject {
                font-size: 12pt;
                font-weight: bold;
                color: #FF0000;
                margin-bottom: 10px;
                background-image: url(images/icon_grean.gif);
                background-repeat: no-repeat;
                background-position: left center;
                padding-left: 16px;
        }
        .datatable {
                border-collapse:collapse;
                border:1px solid black;
                background-color:#FFF;
        }        
        .datatable td{
                border:1px solid #CCC;
        }
        .datatable th{
        color: #FFF;
        background-color: #900;
        border: 1px solid #CCC;
        }               
</style>
</head>

<body>
<div data-role="page" id="showOrder">
        <div data-role="header" data-position="fixed" form method="get" data-ajax="false">
                <h1>訂單查詢-顯示訂單</h1>
        </div>
        <div data-role="content">
                <?php if($numorder>0) { ?>
                <div id="orderMessage">
                        <h4>客戶資訊 </h4>
                        <table width="100%" border="0" align="center" cellpadding="4" cellspacing="0" class="datatable">
                        <tr>
                                <th width="70" align="center">資訊</th>
                                <th>內容</th>
                        </tr>
                        <tr>
                                <td align="center"><strong>訂單號碼</strong></td>
                                <td><?php echo $row_order["orderid"]; ?></td>
                        </tr>
                        <tr>
                                <td align="center"><strong>姓名</strong></td>
                                <td><?php echo $row_order["customername"]; ?></td>
                        </tr>
                        <tr>
                                <td align="center"><strong>聯絡電話</strong></td>
                                <td><div class='locked'>下載: <em>訪客無法瀏覽下載點,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div></td>
                        </tr>
                        <tr>
                                <td align="center"><strong>地址</strong></td>
                                <td><?php echo $row_order["customeraddress"]; ?></td>
                        </tr>
                        <tr>
                                <td align="center"><strong>訂貨時間</strong></td>
                                <td><?php echo $row_order["ordertime"]; ?></td>
                        </tr>
                        <tr>
                                <td align="center"><strong>製作狀況</strong></td>
                                <td><?php if($row_order["finish"]==0) { echo "未處理"; } else { echo "已處理"; } ?></td>
                        </tr>
                        </table>
                        <h4>訂單內容 </h4>
                        <table width="100%" border="0" align="center" cellpadding="4" cellspacing="0" class="datatable">
                        <tr>
                                <th width="50" align="center">編號</th>
                                <th align="center">名稱</th>
                                <th width="50" align="center">單價</th>
                                <th width="50" align="center">數量</th>
                                <th width="60" align="center">金額</th>
                        </tr>
                        <?php for($i=0; $i<$numdetail; $i++) { ?>
                        <tr>
                                <td align="center"><?php echo $row_detail[$i]["categoryid"]; ?></td>
                                <td align="center"><?php echo $row_detail[$i]["categoryname"]; ?></td>
                                <td align="center"><?php echo $row_detail[$i]["productprice"]; ?></td>
                                <td align="center"><?php echo $row_detail[$i]["productquantity"]; ?></td>
                                <td align="center"><strong> <?php echo $row_detail[$i]["productprice"]*$row_detail[$i]["productquantity"]; ?> </strong></td>
                        </tr>
                        <?php } ?>
                        <tr>
                                <td colspan="4" align="left">總計</td>
                                <td align="center"><strong>$ <?php echo $row_order["total"]; ?> </strong></td>
                        </tr>
                        </table>
                </div>
                <div>
                        <table width="90%" border="0" align="center" cellpadding="4" cellspacing="0">
                        <tr>
                                <td><div class='locked'>下載: <em>訪客無法瀏覽下載點,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div></td>
                                <td><div class='locked'>下載: <em>訪客無法瀏覽下載點,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div></td>
                <td><div class='locked'>下載: <em>訪客無法瀏覽下載點,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div></td>                        </tr>
                        </table>
                </div>
                <?php } else {?>
                <div style="font-size:28px; text-align:center; color:#FF0000;">此訂單號碼不存在!</div>
                <div>
                        <table width="90%" border="0" align="center" cellpadding="4" cellspacing="0">
                        <tr>
                                <td><div class='locked'>下載: <em>訪客無法瀏覽下載點,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div></td>
                        </tr>
                        </table>
                </div>
                <?php } ?>
        </div>
</div>
</body>
</html>
delete.php
<?php
$name="";$result="";
$orderid = $_GET["orderid"]; // 取得書號
$db = mysql_connect("localhost","root","1234");
mysql_select_db("orderdrink"); // 選擇資料庫
if(isset($_POST["send"])){ // 是否是表單送回
        $sql = "DELETE FROM order WHERE orderid='" . $orderid . "'";
        if (!mysql_query($sql)) // 執行 SQL 指令
                $result = "刪除記錄失敗...<br/>" . mysql_error();
        else header("Location: index.php"); // 轉址
}
else {
         $sql = "SELECT * FROM order WHERE orderid='" . $orderid . "'";
         $rows = mysql_query($sql);
         $row = mysql_fetch_row($rows);
          }
mysql_close($db);
?>
<?php
$pageTiltle="123";
$JSFile = "DisableAjax.js";
include("connsql.php");
?>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<title>無標題文件</title>

<link href="jquery-mobile/jquery.mobile-1.0.min.css" rel="stylesheet" type="text/css">
<script src="jquery-mobile/jquery-1.6.4.min.js" type="text/javascript"></script>
<script src="jquery-mobile/jquery.mobile-1.0.min.js" type="text/javascript"></script>
</head>

<body>
<div data-role="page">
        <div data-role="header">
<h1>刪除紀錄</h1>
</div>
<div data-role="content">
        <ul data-role="listview" data-inset="true">
                <li>訂單編號: <?php echo $orderid ?></li>
        
               
                </ul>
                <form method="post" action="">
                        <div data-role="fieldcontain" >
                                <input type="submit" data-inline="true" name="send" value="刪除紀錄" />
                        </div>
                </form>
        <?php echo $result ?>
               
                </div>
</div>
<?php include("connsql.php"); ?>

        </body>
</html>有抓到ID編號,可是刪除失敗

錯誤代碼:刪除記錄失敗...
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'order WHERE orderid=''' at line 1...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div><div></div>

danny543 發表於 2015-12-22 12:31 PM

你 delete 的 form 沒有把 orderid 傳遞下去
action 加上 ?orderid=<?=$orderid?>

另 header("Location: 並沒有中止程序的功能
下面要加 exit
不然雖然看不到但下面還是會跑

chevylin0802 發表於 2015-12-22 12:57 PM

本帖最後由 chevylin0802 於 2015-12-22 01:01 PM 編輯

感覺很像是學生在寫學校作業
沒規劃也沒有組織性
語法寫法更是完全沒有一致性

$sql_query = "UPDATE `order` SET `finish`=1 WHERE `orderid`='" . $order . "'";
$sql_query = "SELECT * FROM `order` WHERE `orderid`='" . $order . "'";
$sql = "DELETE FROM order WHERE orderid='" . $orderid . "'";
仔細去比對看看你的語法差異

還有
寫企業程式不能為了讓它可以動作而做
沒條理性沒擴充性
萬一哪天要改用其它的資料庫引擎的時候
是不是又要大改版一次?
許多安全性較高的資料庫
還可能要求把它寫到stored procedure裏面
你還在php裏面搞INSET? UPDATE? DELETE?

呼叫資料庫引擎與許多函數
應該建立成一個class物件
所有SQL語法擺到物件裏面去
統一管理
也可以避免許多犯錯
比如已經open的資料庫再一次呼叫open資料庫
像你的delete.php一開頭裏所寫的
也沒對是否已經open database 做檢查就又重覆open databse
你確信這樣子會動嗎?
...<div class='locked'><em>瀏覽完整內容,請先 <a href='member.php?mod=register'>註冊</a> 或 <a href='javascript:;' onclick="lsSubmit()">登入會員</a></em></div>
頁: [1]