[英]PHP UTF-8 search not working
出於任何奇怪的原因,我都無法搜索非英文字符。 腳本死亡。 我認為這是在搜索時死亡的。 空白頁,布局的一半,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";
};
錯誤:
非法混合排序規則以進行“贊”操作
您的代碼一團糟-或您匆忙復制/粘貼有錯誤。
首先查詢:
$query = " SELECT * FROM members WHERE first_name LIKE '%".mysqli_real_escape_string($db_connect, $searchTerm)."%' ";
注意mysqli_real_escape_string-您需要的最小清理。
然后結果:
$results = mysqli_query ($db_connect, $query) or die (mysqli_error ($db_connect));
您搞砸了mysqli_和mysql_(在die函數中)。 不好。
現在,如果這兩個更改對您沒有幫助,請嘗試將腳本放在最上方,放在所有其他內容之上:
error_reporting(E_ALL);
ini_set('display_errors', '1');
這應該可以幫助您在代碼中查明任何php錯誤。
找到了問題。 需要修復...
date LIKE '%$searchTerm%'
無效。 破壞代碼。 到目前為止,我已經嘗試將LIKE
更改為=
,刪除%
,放入mysqli_real_escape_string ($db_connect , $searchTerm)
。
至於數據庫字段,它是一種日期類型。
非法混合排序規則以進行“贊”操作
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.