2017-08-29 81 views
0

我的問題很簡單,但我沒有發現任何問題或答案this.I意味着他們不是我的情況的解決方案是行不通的。 這是我的代碼。%%在MySQL中的語法跡象時,有一個精確匹配

$characters = $_GET["search"]; 
$characters2 = "%". $characters . "%" ; 
$statement = $connection->prepare(
    "SELECT name,username FROM users WHERE 'name' LIKE :username or 'username' LIKE :username"); 
$statement->bindParam(':username', $characters2, PDO::PARAM_STR); 
$statement->execute(); 

問題是,如果你在數據庫中的名稱列有大衛和你的$ _GET [「搜索」]爲「DAVI」或「大衛」,它無法找到大衛一行。

返回空。

+0

我不認爲你需要「名」引用。但我可能是錯的。我覺得這只是比較'名字'和'大衛' – DJSweetness

+0

@DJSweetness你沒有錯,而且正如所寫的,這是胡說,這就是爲什麼OP認爲它的工作不正確。 OP,在你的字段名稱周圍使用反引號(不是單引號),並在你的搜索條件中使用單引號:'WHERE name LIKE':username'or username LIKE':username'' – JNevill

+0

@JNevill根據這個資源http:// php .net/manual/tr/pdostatement.bindparam.php#99698你的「圍繞你的搜索詞使用單引號」是錯誤的,但我並沒有在我的字段名稱周圍使用單引號。 –

回答

0

您正在比較字符串'name'和用戶'david'的輸入。用sql,你需要把所有列的名稱,在你的情況下,只是名稱。對於用戶名

於是同樣的事情,

$statement = $connection->prepare(
"SELECT name,username FROM users WHERE name LIKE :username or username LIKE :username"); 

周圍沒有和用戶名引號將工作