Hy,我正在尝试执行此代码
public function CardsTextSearch($text){
$hashed_text = md5($text);
echo "HASHED ".$text." IN ".$hashed_text."<br>";
$result = array();
$sql = "SELECT cardID,cardName FROM Cards WHERE CONTAINS(hashedCardName, '$hashed_text')";
if ($sth = $this->DBH->query($sql) ){
//echo "PREPARED <br>";
//$sth->execute(array($hashed_text));
echo "EXECUTED: ";
var_dump($sth);
echo "<br>";
$row = $sth->fetchAll(PDO::FETCH_ASSOC);
var_dump($row);
echo "<br>ROW: ".$row."<hr>";
}else{
echo "ERRORE<br>";
print_r($this->DBH->errorInfo());
}
var_dump($result);
echo "RESULT<hr>";
return $result;
}
暂且不要因为搜索加密字符串(因为字段cardName是varchar(150),所以不可索引),你能不能告诉我代码中是否有任何错误,因为查询没有work,生成的输出如下:
HASHED Bad Moon IN 9e326d217f275a19ba1df92cb64be771
EXECUTED:Object(PDOStatement)#5(1){[“queryString”] =&gt; string(100)“SELECT cardID,cardName FROM Cards WHERE CONTAINS(hashedCardName,'9e326d217f275a19ba1df92cb64be771')”} 数组(0){} 行:数组
我确信数据库中存在hashedCardName ='9e326d217f275a19ba1df92cb64be771'的现有值,不太确定已将列hashedCardName编入索引。 可能是该列尚未编入索引或我在代码中做错了什么?
P.S。 我也尝试使用$ stmt = $ this-&gt; DBH-&gt;你可以在我留下的一些评论中看到prepare()和execute()。
答案 0 :(得分:0)
Contains
不起作用。试试Like
或Instr
:
SELECT * FROM Cards
WHERE hashCardName like '$hashed_text';
SELECT * FROM Cards
WHERE INSTR(hashCardName, '$hashed_text');