VTrim написав:У вас маса помилок і застарілий код..
Наведу вам приклад простого пошуку на об'єктно орієнотованому mysql(i) з використанням підготовчих виразів та іменованих параметрів для уникнення SQL ін'єкцій і filter_var для уникнення XSS.
$db = new mysqli('localhost', 'login', 'password', 'database');
if($db->connect_errno) exit('Помилка підключення: '.$db->connect_error);
if(isset($_GET['search']) && !empty($_GET['search'])) {
$searchText = '%'.$_GET['search'].'%';
$search = $db->prepare("SELECT * FROM users WHERE name LIKE ? OR last_name LIKE ?");
$search->bind_param('ss', $searchText, $searchText);
$search->execute();
$result = $search->get_result();
if($result->num_rows > 0) {
echo 'Результати пошуку: <br/>';
while($out = $result->fetch_object()) {
$login = filter_var($out->login, FILTER_SANITIZE_FULL_SPECIAL_CHARS);
echo $login.'<br/>';
}
}
else {
echo 'Нічого не знайдено.';
}
}
else {
echo '<form method="GET">
<input type="text" name="search">
<input type="submit" value="Пошук">
</form>';
}
функціональним стилем )))
$db = mysqli_connect('localhost', 'login', 'password', 'database');
if(mysqli_connect_errno()) exit('Помилка підключення: '.mysqli_connect_error());
if(isset($_GET['search']) && (!empty($_GET['search']))) {
$searchText = '%'.$_GET['search'].'%';
$search = mysqli_prepare($db, "SELECT * FROM users WHERE name LIKE ? OR last_name LIKE ?");
mysqli_stmt_bind_param('ss', $searchText, $searchText);
mysqli_stmt_execute($search);
/* //так можна привязати значення стовпців з бд до змінних, кількість змінних повинна дорівнювати кількості стовпців(якщо я не помиляюся)
mysqli_stmt_bind_result($search, $s1, $s2, $s3);
*/
if(mysqli_num_rows($search) > 0) {
echo 'Результати пошуку: <br>';
while($out = mysqli_stmt_fetch($search)){
/*якщо ми вставляли у бд html-теги без перетворення і хочемо щоб вони вивелися на сторінці як текст, а не як теги/не ламали сторінку,, інакше напевно можна просто вивести*/
$login = htmlspecialchars($out['login'], ENT_QUOTES);
echo $login.'<br>';
}
mysqli_stmt_close($search);
mysqli_close($db);
}else{
echo 'Нічого не знайдено.';
}
}else{
echo '<form method="GET">
<input type="text" name="search">
<input type="submit" value="Пошук">
</form>';
}
filter_var з FILTER_SANITIZE_FULL_SPECIAL_CHARS === еквівалентно htmlspecialchars з ENT_QUOTES,
проте стосовно XSS напевно варто більше думати при збереженні у бд, ніж при вибірці))