我已經習慣了做這樣的事情對我的詢問下:在MySQL在PHP條款參數,Python的
$array = array(123,456,10,57,1024,768); //random data
$sql = "select * from table where field in(".implode(',',$array).")";
mysql_query($sql);
這一切正常,並且是快速即使陣列可以有1000名以上的項目搜索(實際上針對不存在的表的聯合)。 對我來說,這非常有用,因爲我將來自多個來源的數據連接在一起。
但是,我知道它有點不安全 - 如果我沒有正確地逃脫我的傳入數據,SQL注入是可能的。
我想嘗試弄清楚這個參數化的等價物;一些使用更多「硬化」代碼來完成那種「數組入」的方法。
它可能不可能直接做到這一點,它可能需要一個輔助函數來做替換。如果是這樣,我正在尋找一個好的我可以放入我的代碼,希望能讓我只是傳遞一個數組作爲參數。
雖然我的例子是針對PHP的,但我也需要爲Python計算出來,因爲我在那裏做同樣的事情。
我在這裏看過一些類似的問題,但沒有看到任何(好的)答案。
通過使用PDO,您可以輕鬆擴展'PDOStatement'並添加一個方法來爲IN子句構建您的SQL字符串。顯示在Barmar的回答中。 – Xorifelse