PHP UTF-8搜索不工作
不管出于什么奇怪的原因,我不能搜索非英语字符。剧本死了。我想它会在搜索时死去。空白页面,布局的一半,PHP脚本之后没有任何内容 代码是从一个工作站点(我自己的站点)复制的,没有布局,所以它应该可以工作。但事实并非如此 在search.php上:PHP UTF-8搜索不工作,php,database,search,utf-8,Php,Database,Search,Utf 8,不管出于什么奇怪的原因,我不能搜索非英语字符。剧本死了。我想它会在搜索时死去。空白页面,布局的一半,PHP脚本之后没有任何内容 代码是从一个工作站点(我自己的站点)复制的,没有布局,所以它应该可以工作。但事实并非如此 在search.php上: <meta charset='utf-8' /> $query = "SELECT * FROM members WHERE first_name LIKE '%$searchTerm%' OR
<meta charset='utf-8' />
$query = "SELECT * FROM members WHERE first_name LIKE '%$searchTerm%' OR
last_name LIKE '%$searchTerm%' OR
date LIKE '%$searchTerm%'";
$results = mysqli_query ($db_connect, $query)
or die (mysqli_error (db_connect));
if (mysqli_num_rows ($results) >= 1) {
$record = "";
while ($row = mysqli_fetch_array ($results)) {
include "result.php";
} echo $record . "<hr />$search_form</main>";
} else {
echo "<h1>0 Matching Records</h1><hr />$search_form";
};
关于数据库:
utf8\u概述\u ci
我还缺什么
search.php(结果页):
php/search.php:
<meta charset='utf-8' />
$query = "SELECT * FROM members WHERE first_name LIKE '%$searchTerm%' OR
last_name LIKE '%$searchTerm%' OR
date LIKE '%$searchTerm%'";
$results = mysqli_query ($db_connect, $query)
or die (mysqli_error (db_connect));
if (mysqli_num_rows ($results) >= 1) {
$record = "";
while ($row = mysqli_fetch_array ($results)) {
include "result.php";
} echo $record . "<hr />$search_form</main>";
} else {
echo "<h1>0 Matching Records</h1><hr />$search_form";
};
$query=“从名为“%$searchTerm%”或
姓“%$searchTerm%”或
类似“%$searchTerm%”的日期;
$results=mysqli\u查询($db\u connect,$query)
或死亡(mysqli_错误(db_连接));
if(mysqli_num_rows($results)>=1){
$record=“”;
while($row=mysqli\u fetch\u数组($results)){
包括“result.php”;
}echo$record.“
$search\u form”;
}否则{
echo“0个匹配记录
$search\u form”;
};
错误:
“like”操作的排序规则非法混合
您的代码乱七八糟-或者您在匆忙中复制/粘贴错误。
首先查询:
$query = " SELECT * FROM members WHERE first_name LIKE '%".mysqli_real_escape_string($db_connect, $searchTerm)."%' ";
注意mysqli_real_escape_字符串-您需要的最小消毒量
结果是:
$results = mysqli_query ($db_connect, $query) or die (mysqli_error ($db_connect));
您已经弄乱了mysqli_uu和mysql_uu(在die函数中)。不太好
现在,如果这两个更改对您没有帮助,请尝试将以下内容置于脚本的最顶端:
error_reporting(E_ALL);
ini_set('display_errors', '1');
这将帮助您查明代码中的任何php错误。发现了问题。需要修复
类似“%$searchTerm%”的日期不起作用。破译密码。到目前为止,我已经尝试将如更改为=
,删除%
,放入mysqli\u real\u escape\u字符串($db\u connect,$searchTerm)
至于数据库字段,它是日期类型
“like”操作的排序规则非法混合
mysqli
已过时,请改用PDO。别忘了清理你的输入。它到底是怎么不起作用的?它会给出一个错误吗?或者它返回一个空集吗?使用mysql\u escape\u string()
作为$searchTerm
它会消失,就像退出一样()。没有错误,至少没有显示错误。布局在脚本中的某个地方中断。包括result.php中的代码或执行error\u reporting(E\u ALL)
以查看错误:是的,完全错过了mysqli。为“like”操作提供了非法的排序规则混合。另一个给了一大堆。还有,什么是$server\u connect
<代码>$db_connect
?
error_reporting(E_ALL);
ini_set('display_errors', '1');