[英]How to remove single quotes in prepare statement?
我的查詢是這樣的:
$group_id = $session['group_id'];
$sql = "SELECT *
FROM notification
WHERE group_id IN(?)";
$result = $this->db->query($sql, array($group_id))->result_array();
當我添加: echo $this->db->last_query();die();
,結果是這樣的:
SELECT * FROM notification WHERE group_id IN('1,13,2')
我想刪除單引號,結果是這樣的:
SELECT * FROM notification WHERE group_id IN(1,13,2)
如何刪除prepare語句中的單引號?
將%s占位符更改為%1s 會刪除准備語句中的自動單引號。
示例:
global $wpdb
$sql = $wpdb->prepare( "SELECT * FROM {$wpdb->prefix}posts WHERE post_status='wc-completed' AND ID IN(%1s)", '1,2,3' );
參考鏈接:謝謝
您要么需要動態添加盡可能多的?
因為您在數組中有值...
或者停止使用准備好的查詢並執行以下操作:
$group_id = $session['group_id'];
$sql = "SELECT *
FROM notification
WHERE group_id IN (".implode($group_id,",").")";
如果數據不是來自用戶,您不一定需要使用准備好的查詢來確保數據是安全的。 但如有必要,您可以在查詢之前執行is_numeric()
檢查以查看數據是否有效。
我更喜歡你可以使用 where_in 命令,如下所示:-
$this->db->select('*');
$this->db->where_in('group_id',$group_id);
$this->db->get('notification');
您所要做的就是創建一組組 ID。 嘗試如下
$group_id = explode(',',$session['group_id']);
$this->db->select('*');
$this->db->where_in('group_id',$group_id);
$this->db->get('notification');
它會工作
你可以這樣做:
$session['group_id']可能是一個字符串。 這樣您就可以將該字符串轉換為數組。
$group_id = explode(",", $session['group_id']);
現在 $group_id 已經是一個數組。 因此,在下面的語句中,將array($group_id)替換為'$group_id' :
$result = $this->db->query($sql, array($group_id))->result_array();
所以整個代碼將是這樣的:
$group_id = explode(",", $session['group_id']);
$sql = "SELECT *
FROM notification
WHERE group_id IN(?)";
$result = $this->db->query($sql, array($group_id))->result_array();
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.