我正在尝试在数据库 mySQL 中搜索一些法国城市。
有些城市就像 SAINT-MALO 里面有一个连字符 (-) 。
我的研究只有一个单词,当我写(输入类型)saint-m时,结果还可以。
但是当我写圣马洛(两个词)时它不起作用(我的意思是从这些行研究中没有任何意义)
最好的方法是什么
我的代码(这只涉及city_upper搜索而不是邮政编码)
$list = array();
$strQuery = "SELECT zipcode CodePostal, city_upper Ville FROM french_cities WHERE ";
if (isset($_POST["codePostal"]))
{
$strQuery .= "zipcode LIKE :codePostal ";
}
else
{
$strQuery .= "city_upper LIKE :ville ";
}
if (isset($_POST["codePostal"]))
{
$value = $_POST["codePostal"]."%";
$query->bindParam(":codePostal", $value, PDO::PARAM_STR);
}
else
{
$value = utf8_encode($_POST["ville"])."%";
$query->bindParam(":ville", $value, PDO::PARAM_STR);
}
$query->execute();
$list = $query->fetchAll(PDO::FETCH_CLASS, "AutoCompletionCPVille");;
foreach ($list as $row){
$row->Ville = ($row->Ville);
}
echo json_encode($list);
我尝试寻找答案,但我是 PHP 新手。我想我必须爆炸研究,但不确定
提前感谢您的宝贵帮助 玫瑰花蕾
我建议执行您所要求的最简单的方法就是在用破折号替换所有连字符后比较字符串。
改变
$strQuery .= "city_upper LIKE :ville ";
到
$strQuery .= "REPLACE(city_upper, '-', ' ') LIKE :ville ";
并改变
$value = utf8_encode($_POST["ville"])."%";
到
$value = utf8_encode(str_replace('-', ' ', $_POST["ville"]))."%";