[英]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
,因此情況0
和1
行為相同。
更新
應該:
$load_details->fetch();
是:
$load_status->fetch();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.