2014-09-01 4 views
0

у меня есть этот код, который выполняет поиск по БД, если имя существует:
MySQL: Выберите LIKE не работает должным образом

<?php 
$name = $_POST['name']; 

$get_search_results_q= "SELECT * FROM `users`.`info` WHERE `info`.`fullname` LIKE '%$name%' "; 
$get_search_results_run=mysql_query($get_search_results_q); 
if($get_search_results_run==0){ 
    echo "No results were found"; 
}else{ 
    while($rows = mysql_fetch_assoc($get_search_results_run,MYSQL_NUM)){ 
     $com_array[] = $rows[3]; 
    } 
    echo json_encode($com_array); 
} 

?> 


Он отлично работает, когда я введите имя, которое существует в БД.
Но когда я печатаю то, что не существует, ничего не возвращается.
Это код JQuery AJAX, который отображает данные:

.done(function(data) { 
       var result = eval(data); 
       if(!result){ 
        $(".results").empty(); 
        $(".results").append('<div class="horizontal result_element">'+result+'</div>'); 
        $("#search_result_box").show(); 
       }else{ 
        $(".results").empty(); 
        for (var i = 0; i < result.length; i++) { 
         $(".results").append('<div class="horizontal result_element"><div class="result_photo"></div><div class="result_data">'+result[i]+'</div></div>'); 
        } 
        $("#search_result_box").show(); 
       } 
       }); 

Я пробовал много вещей, как отображать данные на JQuery и результат mysql_query, но ничего не происходит.

+4

Если совпадения нет, почему бы вам ожидать чего-нибудь, что нужно вернуть? – Musa

+0

mysql_query предназначен для возврата false, когда результаты не возвращаются в оператор SELECT. –

+2

Нет, это неправильно http://php.net/manual/en/function.mysql-query.php – Musa

ответ

1

Попробуйте

$total_rows = mysql_num_rows($get_search_results_run); 
if(!$total_rows){ 
    echo "No results were found"; 
}else{ 
    while($rows = mysql_fetch_assoc($get_search_results_run,MYSQL_NUM)){ 
     $com_array[] = $rows[3]; 
    } 
    echo json_encode($com_array); 
} 

EDIT

Я думаю, потому что вы отправить сообщение об ошибке типа не в формате JSON объект, попробуйте следующее:

$name = $_POST['name']; 

$get_search_results_q= "SELECT * FROM `users`.`info` WHERE `info`.`fullname` LIKE '%$name%' "; 
// I missing this before 
$get_search_results_run = mysql_query($get_search_results_q); 
$total_rows = mysql_num_rows($get_search_results_run); 
if(!$total_rows){ 
    $error['message_message'] = "No results were found"; 
    echo json_encode($error); 
}else{ 
    while($rows = mysql_fetch_assoc($get_search_results_run,MYSQL_NUM)){ 
     $com_array[] = $rows[3]; 
    } 
    echo json_encode($com_array); 
} 

.done(function(data) { 
       var result = eval(data); 
       if(result.error){ 
        $(".results").empty(); 
        $(".results").append('<div class="horizontal result_element">'+result.error+'</div>'); 
        $("#search_result_box").show(); 
       }else{ 
        $(".results").empty(); 
        for (var i = 0; i < result.length; i++) { 
         $(".results").append('<div class="horizontal result_element"><div class="result_photo"></div><div class="result_data">'+result[i]+'</div></div>'); 
        } 
        $("#search_result_box").show(); 
       } 
       }); 
+0

Нашли ошибку! Общая проблема заключалась в том, что упомянутый кефи. Он хотел формат объекта jason, но этот массив: $ error ['message_message'] = "Результаты не найдены"; необходимо изменить на: $ error [0] = "Результаты не найдены"; И затем в jQuery измените это: result.error : результат [0] === "Результаты не найдены" И это сработало. –

+1

OK Поздравляем @garrytowel – kefy

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