2015-04-18 84 views
0

我已經開始使用wpdatatables插件, 在後端它有一個地方可以輸入MySql查詢來創建表。僅針對當前用戶的Mysql查詢

我:

SELECT id, currentuserid, text, date_created 
FROM `1items` 
WHERE currentuserid = %d 
ORDER BY `1items`.`currentuserid` 

將列出我需要從數據庫中提取,但是,我想知道是否有一種方法可以在MySQL的動態過濾僅用於當前用戶的ID的所有表。

在第二列「currentuserid」中,它提取所有用戶的ID並將它們輸入到表中。

示例:如果我以用戶標識4登錄 - 我希望查詢過濾掉其他用戶 - 截至目前,上述查詢返回所有用戶標識的表。

當搜索wordpress stackexchange時,我找到了這個:PHP MySQL query - return results for current user only 哪個不起作用,或者我沒有用wpdatatables正確使用它。

謝謝!

+0

根據您的命名很難說出來,但它看起來像列出的查詢應該已經做了你想做的事(過濾'WHERE currentuserid =%d')。據推測,'%d'是當前的用戶ID,對吧?你的'ORDER BY'雖然沒有做任何事情。 –

+0

我得到了WHERE currentuserid =%d從另一個stackexchange問​​題 - 它實際上沒有返回任何結果(除非我把用戶的ID)。所以我希望有像%d那樣動態地返回登錄用戶的結果。感謝您的答覆。 – Twaret

回答

0

%d是一個佔位符,它沒有自己的內在價值。它在一個準備語句中使用,以幫助防止SQL注入攻擊

所以,你需要做這樣的事情:

$currentUser = get_current_user_id(); 

$wpdb->query($wpdb->prepare( 
    " 
     SELECT id, currentuserid, text, date_created 
     FROM `1items` 
     WHERE currentuserid = %d 
    ", 
     $currentUser 
)); 

至於布蘭登龍指出,通過訂單時返回一個什麼都不做用戶的結果。