2012-02-26 68 views
0

在Codeigniter/PHP中,我無法在下面的SQL語句中轉義$ table的實例。逃離mysql沒有單引號?

當我嘗試任何方法,如在查詢結束時使用的方法,他們不工作,因爲單引號。

在這種情況下,是否有任何方法或更改可以推薦?

在此先感謝您的幫助。

MYSQL聲明:

$sql = "SELECT * FROM $table INNER JOIN resumes ON resumes.resume_id = $table.resume_id AND resumes.user_id = ".$this->db->escape($user_id)." AND $table.$field = ?"; 
+0

從哪裏得到'$ table'變量? – zerkms 2012-02-26 23:13:19

+0

什麼是建立的字符串? – user544262772 2012-02-26 23:14:57

+0

@zerkms,$ table變量來自控制器,而不是用戶輸入,不知道這是否使問題有點不相關? – jsuissa 2012-02-26 23:17:52

回答

2

你應該從未接受表名或列名作爲用戶輸入。

,但如果你沒有其他的選擇 - 唯一的辦法就是白名單

因此,您創建的所有允許的表名數組用於像

$valid_tables = array('t1', 'table2'); 

,然後檢查該陣列中存在$table

if (in_array($table, $valid_tables)) { 
    // everything is fine 
} else { 
    // something is wrong 
} 
+0

謝謝 - 在這種情況下,它來自可信賴的來源,但作爲一般性你回答是非常有幫助的。再次感謝。 – jsuissa 2012-02-26 23:28:33