PHP — функция поиска для базы данных MySQL не работает

#php #mysql

#php #mysql

Вопрос:

Мне нужно получить что-то из базы данных, но поиск не работает. Когда я ввожу в строку поиска следующее: alex/bobo/stano , ничего не происходит, он не возвращает никаких результатов. Может ли кто-нибудь указать мне, в чем проблема?

 nume     |  prenume   |    id
stano        bobo           1
alex         bobo           2
  

Вот код:

     // conectare la baza de date
    session_start();
    $db = mysqli_connect("localhost", "root", "", "inregistrare");
    $output = '';
    //conectare
    if (isset($_POST['cauta'])) {
        $cauta1 = $_POST['cauta'];
        $cauta1 = preg_replace("#[^0-9a-z]#i","",$cauta1);

        $query = mysqli_query($db, "SELECT * FROM users WHERE nume LIKE '%$cauta1%' OR prenume LIKE '%$cauta1%'");
        $count = mysqli_num_rows($db, $query);
        if ($count == 0) {
            $output = 'Nu a fost gasit elevul';
        } else {
            while ($row = mysqli_fetch_array($query)) {
                $nume = $row['nume'];
                $prenume = $row['prenume'];
                $id = $row['id'];

                $output .= '<div>'.$nume.' '.$prenume.'</div>';
            }
        }
    }
  

 <html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
<title>Cauta Elev</title>
</head>

<body>
<form method="post">
	<input type="text" name="cauta" placeholder="Cauta Elevul"/>
	<input type="submit" value="Cauta"/>
</form>
<?php print("$output"); ?>
</body>
</html>  

Комментарии:

1. if(isset($_POST[‘cauta’])) Возможно, не установлено? Подсказка: проверьте свой код формы еще раз 😉

2. ops, я изменил форму, но теперь: Обратите внимание: Использование неопределенной константы cauta — предполагается ‘cauta’ в .. в строке 8

3. Вы забыли поместить cauta в кавычки

4. Вы просто ПРЕДПОЛАГАЕТЕ, что никогда ничего не идет не так. вы не проверяете, правильно ли вы подключились к базе данных, вы не проверяете, был ли запрос выполнен успешно (или даже запущен). Это совершенно НЕПРАВИЛЬНОЕ отношение. Никогда НЕ предполагайте успеха, имея дело с внешними ресурсами. Всегда предполагайте сбой, проверяйте наличие сбоя и относитесь к успеху как к приятному сюрпризу.

Ответ №1:

Вы пропустили переменные $ для nume и prenume в выводе $. Правильный:

 $output .= '<div>'.$nume.' '.$prenume.'</div>';
  

Комментарии:

1. Внимание: Использование неопределенной константы cauta — предполагается ‘cauta’ в .. в строке 8 Предупреждение: mysqli_query() ожидает как минимум 2 параметра, 1 из которых указан в … в строке 11 Предупреждение: mysqli_num_rows() ожидает, что параметр 1 будет mysqli_result, значение null указано в .. в строке 12

2. Вы должны передать $db в качестве первого параметра mysqli_query

3. И используйте $_POST[‘cauta’]

4. Предупреждение: mysqli_num_rows() ожидает ровно 1 параметр, 2 из которых указаны в .. в строке 12

5. Удалите $db из mysqli_num_rows. Передать только $query

Ответ №2:

Я думаю, что это должен быть ваш окончательный код.

 <?php
    // conectare la baza de date
    session_start();
    $db = mysqli_connect("localhost", "root", "", "inregistrare");
    $output = '';
    //conectare
    if(isset($_POST['cauta'])){
        $cauta1 = $_POST['cauta'];
        $cauta1 = preg_replace("#[^0-9a-z]#i","",$cauta1);

        $query = mysqli_query($db, "SELECT * FROM users WHERE nume LIKE '%$cauta1%' OR prenume LIKE '%$cauta1%'");
        $count = mysqli_num_rows($query);
        if($count == 0){
            $output = 'Nu a fost gasit elevul';
        }else{
            while($row = mysqli_fetch_array($query)){
                $nume = $row['nume'];
                $prenume = $row['prenume'];
                $id = $row['id'];

                $output .= '<div>'.$nume.' '.$prenume.'</div>';             
            }       
        }       
    }
?>

<html>
    <head>
        <meta http-equiv="Content-Type" content="text/html; charset=UTF-8">
        <title>Cauta Elev</title>
    </head>

    <body>
        <form method="post">
            <input type="text" name="cauta" placeholder="Cauta Elevul">
            <input type="submit" value="Cauta">

        </form>
        <?php print("$output");
        ?>
    </body>
</html>
  

Комментарии:

1. да, работает, это. есть способ добавить функцию при получении информации из базы данных с заглавной буквы?

2. Чтобы отобразить первую букву с заглавной буквы, вы можете использовать $output .= '<div>'.ucfirst($nume).' '.ucfirst($prenume).'</div>';