2011-05-18 30 views
1

我正在寫一個大型的SQL查詢基於我從包含搜索參數提交的表單獲取的信息。我只是想知道如果有人有任何建議,最好的方式做到這一點。我打算有一個if else語句的列表,並根據用戶輸入搜索表單的數據構建一個長搜索字符串。mysql,從表單數據構建長的sql查詢。 (php)

有沒有更好的方法來做到這一點?那裏有推薦的網站或教程嗎?

謝謝。

+3

最終目標是什麼?我不確定你想要達到什麼目的。 (順便說一句:是的,你*做*需要擔心sql注入:#1信任的用戶不#2和一個非惡意的錯字可能會打破你的應用程序) – Piskvor 2011-05-18 17:14:15

+0

指出,改變了。我正在構建一個動態搜索查詢。 – RayLoveless 2011-05-18 17:24:17

回答

1

您仍然需要擔心意外的SQL注入。不要跳過轉義用戶輸入。

至於實際構建查詢本身:使用php的控制結構連接一系列查詢部分並不罕見,但很多人發現像the Zend Framework這樣的工具非常方便。

0

信任,但檢查。它簡單地轉義所有傳入的參數。

mysql_real_escape_string所有的

+0

很酷,我會用它。 – RayLoveless 2011-05-18 17:16:08

2

首先我會用一個prepared statement因爲沒有理由不,我從來沒有信任的用戶輸入。

如果你在數組或對象中有變量,我只需循環遍歷它並在$_POST數組中設置變量和值。請注意,我正在循環訪問我的數組或對象 - 不是$_POST - 它基本上充當白名單。

您可能需要對已更改且未設置的複選框進行一些額外的檢查,因爲它們不會出現在$_POST陣列中。

+0

+1準備好的陳述前景化 – Toto 2011-05-18 17:32:37

+0

我會試一試。謝謝。 – RayLoveless 2011-05-18 17:38:04

+0

在處理所有特殊情況下,官方的「預備聲明」在這裏有點過分殺人。 「mysql_real_escape_string」在我的情況下工作。 – RayLoveless 2011-05-19 20:04:11