#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>';