![](/img/trans.png)
[英]mysql conditional “not_in” based on another value to parse array into query
[英]Parse value to a mysql Query
我有一個快速的問題,我已經從表單中獲取了用戶名變量,我需要在查詢中插入它,您能告訴我我要去哪里了嗎,它說:“字段列表”中的“ $ username”列'
這是代碼:
echo $HTTP_POST_VARS['username'];
echo $username;
$query = sprintf( 'SELECT $username FROM hostess' );
$query = sprintf( 'SELECT %s FROM hostess', $username);
-或,如果這是一個字符串值,我懷疑您可能希望將其包含在查詢文本中的單引號中-
$query = sprintf( "SELECT '%s' FROM hostess", $username);
注意:生成的SQL語句看起來有些奇怪,因為它將為hostess表中的每一行返回相同的文字值。 如果女主人表中有100行,您將返回100個具有相同文字值的行。 這可能就是您想要的,但讓我感到非常奇怪。
注意:sprintf函數在第一個參數中查找%s,%d等占位符,並將其替換為其余參數中的值。)
注意:如果$username
包含一個來自表單的值,並且尚未通過驗證,以阻止SQL注入攻擊,我將使用(公認的老派) mysql_real_escape_string
函數。 (其他人將為更好,更現代的技術提供建議,以達到相同的結果。)
$query = sprintf("SELECT '%s' FROM hostess",mysql_real_escape_string($username));
在PHP中,對字符串使用單引號不會解析變量的字符串。 使用串聯或雙引號:
$query = sprintf( 'SELECT ' . $username . ' FROM hostess' );
$query = sprintf( "SELECT $username FROM hostess");
當然,這並不意味着使用POST var會帶來可怕的風險。
嗯,一切似乎都錯了。
首先,您從未定義變量$ username。 您正在執行的操作僅在仍支持suberglobals的PHP版本中有效。
其次,為什么要使用sprintf進行查詢?
順便提一下,不建議使用HTTP_POST_VARS。 使用POST
正確的代碼就是這樣。
$username = $_POST['username'];
echo $username;
$query = mysql_query("SELECT ".$username." FROM hostess");
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.