我在使用帶變量的引號的sql查詢中遇到了一些問題。 (通常我使用「綁定」,所以我沒有這種問題)。以下是查詢:在sql查詢中使用簡單和雙引號
$myquery = mysql_query("SELECT * FROM mytable ORDER BY id ASC WHERE var='".$var."'");
語法似乎不正確,任何人都可以幫忙嗎?
我在使用帶變量的引號的sql查詢中遇到了一些問題。 (通常我使用「綁定」,所以我沒有這種問題)。以下是查詢:在sql查詢中使用簡單和雙引號
$myquery = mysql_query("SELECT * FROM mytable ORDER BY id ASC WHERE var='".$var."'");
語法似乎不正確,任何人都可以幫忙嗎?
以及你可以嘗試這樣的事:
$query = sprintf("SELECT * FROM mytable WHERE var='%s' ORDER BY id ASC",mysql_real_escape_string($var));
$result = mysql_query($query) or die("Error:" . mysql_error());
另外請注意,ORDER BY是在錯誤的地方。 它更具可讀性,您無需打擾單一的qoute concate。 也是安全的mysql注入。 希望這有助於!
您可以使用它像
$myquery = mysql_query("SELECT * FROM mytable ORDER BY id ASC WHERE var='$var'");
一般來說,你應該使用參數綁定您的DBD(Perl的數據庫驅動程序)或其他語言和驅動器組合提供的功能。我收集你正在使用PHP(雖然你應該標記你的問題,以消除歧義)。
這是How to bind SQL parameters in PHP(使用PDO)上的StackOverflow線程。注意:PHP PDO :: bindParam方法存在限制其他語言類似的功能。因此,閱讀鏈接的線程注意事項。
這是另一個討論有關Binding Parameters to Statements ... Perl的(但概念適用於其他編程語言和他們的SQL庫/驅動器)。
我知道,我總是使用綁定技術。在這裏我想知道,因爲我正在爲使用sql查詢的大量引用項目工作,所以我想說清楚 – Newben
請,不要concat SQL字符串... – Prinzhorn
這種方法通常容易出現SQL注入攻擊,所以它不是真的可取的。「似乎不是合作的直立「意味着什麼都沒有;你有錯誤嗎? – lanzz
@lanzz,抱歉不準確:實際上查詢會加載一些我在網頁上顯示的數據。但是在這裏顯示這些數據失敗 – Newben