簡體   English   中英

預備語句和SQL結果不同

[英]Prepared Statement and SQL different results

我正在設計一個系統,以獲取使用INSERT語句的狀態的最新更新。 Prepared語句塊如下所示。

$load_status = $db->prepare('SELECT `statusID` FROM  `tor_status` WHERE  `requestID`=? ORDER BY  `timestamp` DESC LIMIT 1');
$load_status->bind_param('i',$request_id);
$load_status->execute();
$load_status->bind_result($request_status);
$load_details->fetch();

$status_denied="";
$status_approved="";
$selected = " checked";
//Preselect approved/denied status if applies
switch ($request_status){
    case 0:
        break;
    case 1:
        $status_pproved = $selected;
        break;
    case 2:
        $status_denied = $selected;
        break;
}

但是,使用此數據運行時

| changeID | timestamp | requestID | statusID |
 | 1 | 6/10/2014 11:17 | 1 | 0 | 
 | 2 | 6/10/2014 11:17 | 2 | 0 | 
 | 3 | 6/10/2014 11:33 | 3 | 0 | 
 | 4 | 6/10/2014 11:41 | 4 | 0 | 
 | 5 | 6/10/2014 13:24 | 5 | 0 | 
 | 9 | 6/17/2014 12:30 | 6 | 0 | 
 | 10 | 6/17/2014 13:35 | 7 | 0 | 
 | 11 | 8/9/2014 15:09 | 8 | 0 | 
 | 12 | 8/9/2014 15:13 | 3 | 1 | 
 | 13 | 8/9/2014 15:14 | 3 | 0 | 
 | 14 | 8/9/2014 15:14 | 6 | 0 | 
 | 15 | 8/9/2014 15:28 | 7 | 2 | 
 | 16 | 8/9/2014 15:29 | 6 | 1 | 

在數據庫中運行SQL語句時,在查找requestID為6時返回“ 1”,而准備好的返回“ 0”。有人對您有什么建議嗎?

看起來這可能是您的問題:

$status_approved="";
...
case 0:
    break;
case 1:
    $status_pproved = $selected;
    break;

永遠不要將$status_approved設置$status_approved一個新的,可能未讀的變量$status_pproved ,因此情況01行為相同。

更新

應該:

$load_details->fetch();

是:

$load_status->fetch();

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM