2015-05-25 67 views
2

無論發生什麼奇怪的原因,我都無法搜索非英文字符。腳本死亡。我想,它在搜索中死亡。空白頁面,佈局的一半,PHP腳本後沒有。PHP UTF-8搜索不起作用

代碼是從一個工作網站(我自己的),減去佈局複製,所以它應該工作。但事實並非如此。

在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"; 
     }; 

錯誤:

'喜歡'

排序規則進行操作的非法搭配
+0

排序規則進行操作的非法混合'mysqli'是過時的使用PDO來代替。並且不要忘記清理您的輸入。 – iamawebgeek

+0

它究竟如何不工作?它會給出錯誤嗎?還是它返回一個空集? –

+0

使用'mysql_escape_string()'爲'$ searchTerm' – Samir

回答

0

你的代碼是一團糟 - 或者你錯誤地複製/粘貼。

首先查詢:

$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_(在芯片功能)。不好。

現在,如果這兩個變化不幫你,儘量把你的腳本的最頂部,高於一切:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

這會幫助你在你的代碼找出任何PHP錯誤。

+0

:o是的,完全錯過了mysqli。給我'非法混合的操作排序'像''。另一個給了一大堆。而且,'$ server_connect'是什麼? '$ db_connect'? – reanseih

+0

@reanseih我的壞,。它肩並肩地說$ db_connect,你的指針。 – andrew

0

發現問題。需要修復...

date LIKE '%$searchTerm%'不起作用。打破代碼。到目前爲止,我已經嘗試將LIKE更改爲=,刪除%,並將其放入mysqli_real_escape_string ($db_connect , $searchTerm)

至於數據庫字段,它是日期類型。

'喜歡'