簡體   English   中英

如何刪除prepare語句中的單引號?

[英]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.

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