我有這個查詢從$_POST
得到它的WHERE
參數。事情是我想要動態獲取比較值,而不是爲每個值創建查詢。我現在擁有的是:
$what = $mysqli->real_escape_string($_POST['what']);
........
$query = "SELECT * FROM list WHERE ";
$query .= $what . " = ? LIMIT 0,10";
........
$stmt->bind_param('s', $what);
我的第一個問題:安全性如何在實踐中這是什麼?是否有另一種更好的方式可以管理同一件事,因爲我無法綁定兩個參數?
我遇到的第二個問題是:我想將= ?
更改爲LIKE %?%
,但我無法正常工作。我嘗試使用CONCAT('%', ?, '%')
(壞,我知道),但它仍然無法正常工作。 基本上我最終想達到的是:WHERE ? LIKE %?%
。可能嗎?你能幫我一點嗎?
乾杯,亞歷克斯
這是不安全的,使用白名單。 – MarcDefiant 2013-02-11 15:03:52
即使你能避免SQL注入,你真的不能避免有人撬門查詢你的數據庫(因爲他們把不存在的列),而無需不斷地檢查你的表中存在的列 - 與肯定去建議的白名單。 – 2013-02-11 15:05:55
與喜歡嘗試:'WHERE .. LIKE'然後'bind_param( 'S', '%測試%')' – bitWorking 2013-02-11 15:10:11