php
  • mysql
  • search
  • 2015-09-05 3 views -1 likes 
    -1

    Открывая новую тему, потому что получил прогресс, и теперь вам нужна дополнительная помощь.Поиск Бар Чтобы найти пользователей

    Я создал find.php:

      <h5>Search: </h5> 
         <form action="search.php" method='get'> 
          <input type='text' name='fullname' size='25' /> 
          <input type='submit' value='Search' /> 
        </form> 
    

    И еще одна страница search.php

      <h5>Search: </h5> 
         <form action="search.php" method='get'> 
          <input type='text' name='fullname' value='<?php echo $_GET['fullname']; ?>' size='25' /> 
          <input type='submit' value='Search' /> 
        </form> 
        <?php 
        $fullname = $_GET['fullname']; 
        $terms = explode(" ", $fullname); 
    
        $query = "SELECT * FROM users WHERE "; 
    
        foreach($terms as $each){ 
         $i++; 
    
         if($i == 1) 
          $query .= "fullname LIKE '%$each%'"; 
         else 
          $query .= "OR fullname LIKE '%$each%'"; 
    
        } 
    
        $query = mysql_query($query); 
        $numrows = mysql_num_rows($query); 
    
         if($numrows > 0){ 
    
          while($row = mysql_fetch_assoc($query)){ 
           $id = $row['id']; 
           $fullname = $row['id']; 
           $profile_picture = $row['profile_picture']; 
    
           echo "<img src='www.secrethashtags.com/uploads/profile_picture/$profile_picture' height='50' width='50'> <br><a href='www.secrethashtags.com/profile.php?id=$id'>Aviv Day </a></br>"; 
          } 
    
         } else 
          echo "No #Results."; 
    
    
        ?> 
    

    Теперь я пытаюсь его на моем сайте, и он не говорит мне никаких результатов. Я пытаюсь найти всех пользователей с полным именем, как fullname в таблице mysql.

    , и если он находит, эхо изображение профиля пользователя 30x30 и его имя связано с его страницей профиля.

    но не работает. Надеюсь на помощь.

    +1

    Сообщалось об ошибках? Вы отправили запрос и увидели, что строится? Сначала вы должны определить '$ i' и увеличить его в конце каждой итерации. Это также откроет вам SQL-инъекции. Вы должны переключиться на 'mysqli' или' pdo' и использовать подготовленные операторы. – chris85

    +0

    @ chris85 ничего, он точно так же, как numrows = 0, и переходит к функции else и не печатает никаких результатов. –

    +0

    Перед '$ query = mysql_query ($ query);' вывести запрос. Попробуйте запустить db. – chris85

    ответ

    1

    Просто измените эту строку, и она исправит вашу проблему.

    $query .= " OR fullname LIKE '%$each%'"; 
    
    +0

    , чтобы поделиться тем, почему это должно исправить? будущие посетители этого вопроса также хотели бы знать. –

    +1

    Конкатенация создавала неверный оператор SQL. Ему понадобилось пространство, чтобы сделать его действительным. Я просто добавил туда место. –

    0

    сначала вы должны перейти от mysql к mysqli


    изменения этой части кода

    //define $i  
    foreach($terms as $each){ 
          $i++; // increment at the end of each iteration 
    
         if($i == 1) 
          $query .= "fullname LIKE '%$each%'"; 
         else 
          $query .= "OR fullname LIKE '%$each%'"; 
    
        } 
    

    и вы должны отобразить сообщение об ошибке SQL, чтобы узнать, что действительно hapen

    $result = mysql_query($query) or die(mysql_error());; 
        $numrows = mysql_num_rows($result); 
    

    a d здесь

    $id = $row['id']; 
    $fullname = $row['fullname']; 
    
    +0

    Итак, теперь я получаю SELECT * FROM пользователей WHERE fullname = Aviv DayYou имеет ошибку в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса для использования рядом с «Днем» в строке 1 –

    +0

    , так что это ошибка SQL, попробуйте использовать 'вместо ' –

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