2013-08-16 2 views
0

Я не получаю результатов поиска из моей базы данных mysql, используя php. Я пробовал использовать mysqli и PDO стиль от here.jQuery ui autocomplete нет результатов поиска

HTML

<div id="tags_wrapper"> 
    <p>Tags</p> 
    <input type="text" class="txtTag" placeholder="Start entering tag..">  </input> 
</div> 

JQuery: расположен в PHP страницу в корневой/Блог/panel.php, 'источник', расположенный в корневой/Блог/_class/tag_filler.php.

<script type="text/javascript"> 
    $(document).ready(function(){ 
     $('.txtTag').autocomplete(
     { 
      source:'/_class/tag_filler.php', 
      minLength: 2 
     }); 
    }); 
</script> 

источник PHP [MySQLi]: Brisktilities.php создает экземпляр MySQLi, который я использую ниже.

include_once 'BriskUtilities.php'; 

$util = new BriskUtilities(); 
$mysqli = $util->getMysqli(); 
if(isset($_GET['term'])) { 
    $search = $_GET['term']; 
    if($queryTags = $mysqli->query("SELECT * FROM Tag_T WHERE tValue LIKE %".$search."% ORDER BY tValue ASC")) { 
     while($row = mysqli_fetch_array($queryTags)) { 
      $results[] = array('id' => $row['tID'], 'label' => $row['tValue']); 
     } 
     echo json_encode($results); 
    } 
$mysqli->close(); 
} 

источник PHP [PDO]: Еще нет результатов поиска с PDO. Моя БД brisk, моя таблица tag_t, и мое соединение работает правильно. Какие-либо предложения?

try { 
    $conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass) or die ("<p class='error'>Sorry, we were unable to connect to the database server.</p>"); 
} 
catch(PDOException $e) { 
    echo $e->getMessage(); 
} 
$return_arr = array(); 

if ($conn) 
{ 
    $ac_term = "%".$_GET['term']."%"; 
    $query = "SELECT * FROM tag_t where tValue like :term"; 
    $result = $conn->prepare($query); 
    $result->bindValue(":term",$ac_term); 
    $result->execute(); 

    /* Retrieve and store in array the results of the query.*/ 
    while ($row = $result->fetch(PDO::FETCH_ASSOC)) { 
     $row_array['id'] = $row['id']; 
     $row_array['value'] = $row['tValue']; 

     array_push($return_arr,$row_array); 
    } 
} 
$conn = null; 
echo json_encode($return_arr); 

Update GET «термин» не найден (ошибка уходит при смене источника в блог/_class/tag_filler.php, но до сих пор никаких результатов поиска не вернулся. Я использую базу данных на той же странице и это результаты для другой таблицы штрафа выборки):

Failed to load resource: the server responded with a status of 404 (Not Found) [http] site.local/_class/tag_filler.php?term=an 
Failed to load resource: the server responded with a status of 404 (Not Found) site.local/_class/tag_filler.php?term=and 
GET site.local/_class/tag_filler.php?term=my 404 (Not Found) jquery-1.9.1.js:8526 
+0

Недавно я работал в поисковой системе с JQuery и автозаполнения. Это для использования MySQLi. Место, куда я отправился на большой учебник, - это: http: //youhack.me/2010/04/28/creating-a-fancy-search-feature-with-php-mysql-and-jquery/ загрузка работает прямо из коробки , и я просто заменил dabase моим и сделал некоторые незначительные изменения в коде. Но он отлично работает, и он полностью завершен. –

+0

спасибо @ BenP.Dorsi-Todaro, я посмотрю на него и посмотрю, работает ли оно для меня. – user2690805

+0

Стоит упомянуть, что вы исправляете двигатель от инъекций mysql. –

ответ

0

При использовании, как вам нужно заключить значение в кавычки. например tValue like '%my_value%'.

Обратите внимание на использование одиночных кавычек в следующем (я только показывать строки, которые должны быть обновлены):

в вашем Mysqli:

$mysqli->query("SELECT * FROM Tag_T WHERE tValue LIKE '%".$search."%' ORDER BY tValue ASC") 

и в вашем PDO:

$ac_term = "'%".$_GET['term']."%'"; 

Обновление:

Если вы уже пробовали это, добавьте некоторую обработку ошибок, чтобы вы могли сузить источник проблемы.

Для MySQLi (http://php.net/manual/en/mysqli.error.php):

$queryTags = $mysqli->query("SELECT * FROM Tag_T WHERE tValue LIKE %".$search."% ORDER BY tValue ASC"); 
if (!$queryTags) { 
    printf("Error: %s", mysqli_error($mysqli)); 
} 

while($row = mysqli_fetch_array($queryTags)) { 
    $results[] = array('id' => $row['tID'], 'label' => $row['tValue']); 
} 
echo json_encode($results); 

Для PDO ( http://php.net/manual/en/pdo.error-handling.php):

try { 
    $conn = new PDO("mysql:host=$dbhost;dbname=$dbname", $dbuser, $dbpass); 
    $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
} 
catch(PDOException $e) { 
    echo $e->getMessage(); 
    die(); 
} 
+0

@ user2690805, предложите добавить некоторую обработку ошибок на реализацию mysqli и pdo для отладки проблемы. См. Соответствующие ссылки из обновления. – vee

+0

обновление: я заметил в консоли, что я получаю 404 в GET для 'term' – user2690805

+0

Является ли '_check/tag_filter.php' в вашем корневом каталоге документа? – vee

Смежные вопросы