Php 就像不在mysqli工作一样

Php 就像不在mysqli工作一样,php,mysql,sql,Php,Mysql,Sql,下面的查询不返回任何结果 $title = urldecode($_GET['dc']);//contains Speakers $r = '%'.$title.'%'; $stmt = $mydb->prepare(" SELECT * from table where title LIKE ?"); echo $mydb->error; $stmt->bind_param('s', $r ); $stmt->execute();

下面的查询不返回任何结果

   $title = urldecode($_GET['dc']);//contains Speakers
   $r = '%'.$title.'%';
   $stmt = $mydb->prepare(" SELECT * from table where title LIKE ?");
   echo $mydb->error;
   $stmt->bind_param('s', $r );
   $stmt->execute();
但是如果我把
$r
改成
'%.'Speak'.'它可以工作


我做错了什么

首先,您不需要
urldecode
。删除它,因为它可能会破坏你的头衔

其次,请注意,根据您的校对,您的同类可能区分大小写

第三。。。你说
$\u GET['dc']
包含“扬声器”。你确定吗?您是否尝试过使用
echo htmlspecialchars($\u GET['dc'])确定吗

最后。。。当你使用
Speak
时,你会说它有效。。。非
扬声器
。。。是哪一个?如果您使用
%Speakers%
%speake%
进行搜索,则这是非常重要的


编辑同时尝试修剪标题以删除前导空格和尾随空格。因此,请尝试更改
$title=urldecode($\u GET['dc'])进入
$title=trim($\u GET['dc'])

以及
$title
包含哪些内容?有什么错误?@mario更新了问题。
//包含“演讲者”
你的意思是带引号吗?@mario删除了引号。更改$r后返回的确切标题是什么?我需要url解码,因为我在第一页对url进行编码。第二,我回音了,听到了
扬声器
,所以是的,里面有扬声器。它应该是双向的,
speak
speakers
,因为它是一个
LIKE
如果我需要确切的
扬声器
,那么为什么我要使用
LIKE
而不是只使用
=
?只需删除第二页上的
urldecode
。您的Web服务器和PHP已经为您进行了解码。(不要删除第一页上的
urlencode
,它应该留在那里!)第二页,好的,太好了,所以$\u可以开始工作了。第一个字母是大写还是小写。。。第三
%Speak%
将为您找到单词
speakes
Speaking
,例如。。。。但是,
%Speakers%
不会。顺便说一句,您可能还需要修剪标题。所以试试changin
$title=urldecode($\u GET['dc'])进入
$title=trim($\u GET['dc'])
通过这种方式,前导或尾随空格将被删除。我删除了urldecode,但没有任何更改,但是我在第一页发现了一个错误,其中我有额外的
&
。另外,
“%。”发言者“%”
也可以而且应该可以。谢谢你给了我一些建议。