%%在MySQL中的语法迹象时,有一个精确匹配
问题描述:
我的问题很简单,但我没有发现任何问题或答案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”或“大卫”,它无法找到大卫一行。
返回空。
答
您正在比较字符串'name'和用户'david'的输入。用sql,你需要把所有列的名称,在你的情况下,只是名称。对于用户名
于是同样的事情,
$statement = $connection->prepare(
"SELECT name,username FROM users WHERE name LIKE :username or username LIKE :username");
周围没有和用户名引号将工作
我不认为你需要“名”引用。但我可能是错的。我觉得这只是比较'名字'和'大卫' – DJSweetness
@DJSweetness你没有错,而且正如所写的,这是胡说,这就是为什么OP认为它的工作不正确。 OP,在你的字段名称周围使用反引号(不是单引号),并在你的搜索条件中使用单引号:'WHERE name LIKE':username'or username LIKE':username'' – JNevill
@JNevill根据这个资源http:// php .net/manual/tr/pdostatement.bindparam.php#99698你的“围绕你的搜索词使用单引号”是错误的,但我并没有在我的字段名称周围使用单引号。 –