使用一個變量,我想用戶PHP MySQL查詢的內部變量來表示WHERE子句,像這樣:在PHP MySQL查詢
$where= name=mark AND address=4;
$query= "SELECT * FROM clients WHERE $where";
我這樣做正確嗎?如果不是,那麼正確的是什麼?
使用一個變量,我想用戶PHP MySQL查詢的內部變量來表示WHERE子句,像這樣:在PHP MySQL查詢
$where= name=mark AND address=4;
$query= "SELECT * FROM clients WHERE $where";
我這樣做正確嗎?如果不是,那麼正確的是什麼?
你的PHP方法是正確的,但是你需要在SQL字符串周圍單引號,你也需要包裝帶引號的字符串PHP變量,所以你的變量應該是這樣的:
$where = "name = 'mark' AND address = 4";
$query = "SELECT * FROM clients WHERE {$where}";
您需要使用參數化查詢進行正確的轉義和安全!考慮PDO或mysqli而不是連接這樣的變量。 – user113215 2013-04-05 04:11:10
謝謝,我自己使用PDO,只是回答OP的問題 – 2013-04-05 04:13:20
@ user113215您還不知道變量來自哪裏。它也可以非常安全。 – itachi 2013-04-05 04:14:05
這是你想要什麼:
$where = "name= 'mark' AND address= '4'";
$query= "SELECT * FROM clients WHERE $where";
把雙引號放在$的值附近。 MySQL表字段的值應該用引號括起來
您需要使用參數化查詢才能正確轉義和安全!考慮PDO或mysqli而不是連接這樣的變量。 – user113215 2013-04-05 04:11:58
我發佈了OP的問題的答案。 – Sabari 2013-04-05 04:14:31
@ user113215對於downvote觸發器非常快速。 +1來彌補它。 – 2013-04-05 04:16:05
您在引號內處理php變量的做法是錯誤的..並且您的語法也是錯誤的。 只要你想使用PHP雙引號變量..你應該把它包括在方括號{}
。 而且,由於使用的是$where
作爲字符串應該字符串中
$where= "name='mark' AND address=4";
$query= "SELECT * FROM clients WHERE {$where}";
雖然這可能不是與此有關,但另一個好的做法是在使用PHP變量與字符串使用sprintf()正確封閉
$query = sprintf("SELECT * FROM clients WHERE %s", $where);
考慮修改[基本變量](http://www.php.net/manual/en/language.variables.basics.php)。 – 2013-04-05 04:06:02
[Duplicated](http://stackoverflow.com/questions/8157371/using-where-clause-as-a-variable-in-mysql-query-not-working), – gks 2013-04-05 04:06:18