【发布时间】:2024-04-26 04:05:02
【问题描述】:
出于某种奇怪的原因,我无法搜索非英文字符。剧本死了。我想它会在搜索中死去。空白页,一半布局,PHP 脚本后什么都没有。
代码是从一个工作站点(我自己的)复制的,减去布局,所以它应该工作。但事实并非如此。
在 search.php 上:
<meta charset='utf-8' />
在表格上:
<form action='search.php' method='get' accept-charset='utf-8'>
在 db_connect.php 上:
mysqli_set_charset($db_connect, "utf8");
关于数据库: utf8_general_ci
我还缺少什么?
search.php(结果页面):
<?php
include ("php/form.php");
$searchTerm = trim ($_GET['keyname']);
if (!empty ($searchTerm)) {
if (strlen ($searchTerm) > 2) {
include "php/search.php";
} else {
echo "<h1>Enter 3 or More Characters</h1><hr />$search_form";
};
} else {
echo "<h1>Enter Search Term</h1><hr />$search_form>";
};
?>
php/search.php:
$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";
};
错误:
“like”操作的排序规则的非法混合
【问题讨论】:
-
mysqli已过时,请改用 PDO。并且不要忘记清理您的输入。 -
到底是怎么回事?它会给出错误吗?还是返回一个空集?
-
将
mysql_escape_string()用于$searchTerm -
它死了,就像一个 exit()。没有错误,至少没有显示。并且布局在该脚本中的某处中断。
-
包含来自
result.php的代码或执行error_reporting(E_ALL)以查看错误。