2015-05-29 63 views
0

我想確保我的Wordpress代碼是從SQL注入安全,並試圖使用$ wpdb-> prepare()來確保這一點。但是,它似乎並不正確。

我正在練習的代碼從同一服務器上的不同SQL數據庫中提取數據(即不是來自wordpesss數據庫)。我使用的代碼是:

$mydb = new $wpdb('databese_username','password','datbasename', 'host'); 
$id = 2; 
$users = $mydb->get_results($mydb->prepare("SELECT table.column 
          FROM table.column 
          INNER JOIN table ON table.column = table.column 
          WHERE table.column = %d",$id)); 

這是罰款,獲取數據,但是否準備尚不清楚()的工作,如果以其他方式使用將停止SQL注入。我擔心的是,我可以輕鬆地將$ id更改爲一個字符串(即$ id =「2」;)並且代碼仍然可以獲取我的數據。不應該準備停止工作?

如何在使用外部數據庫時正確使用準備工作?它是$ mydb-> prepare()或者它應該是$ wpdb-> prepare()還是別的?

感謝

+0

準備語句仍然讓你發送無效數據,它只是不會將該數據視爲可能的sql命令。 –

+0

謝謝帕拉,但這實際上意味着什麼?我不需要擔心我的代碼是否返回數據,而不管我是否使用整數或字符串? –

+0

那麼它將是一個字符串,而不是'table.column = 5'它將是'table.column ='一些字符串',並且不管它爲字符串賦予什麼值,它仍然會很好 –

回答

0

你必須已經與WordPress數據庫連接。所以你不需要連接數據庫..你可以使用全球$ wpdb;

global $wpdb; 
$id = 2; 
$users = $wpdb->get_results("SELECT table.column 
          FROM table.column 
          INNER JOIN table ON table.column = table.column 
          WHERE table.column = %d",$id); 
相關問題