У меня проблема с этой функцией mysqli_num_rows(), потому что иногда у меня хорошо работает, а иногда у меня голова разбегается, я действительно не знаю, что с ней не так
это мой файл PHP:
<?php
include 'dbh.php';
function get_font_class() {
global $conn;
if ( isset($_POST['dataSearchBox']) ) {
$searchKeyword = $_POST['dataSearchBox'];
$sql = ' SELECT * FROM fontawesomeicons WHERE name LIKE ' .$searchKeyword. '%; ';
$result = mysqli_query($conn, $sql);
if ( mysqli_num_rows( $result ) > 0 ) {
while ( $row = mysqli_fetch_assoc( $result ) ) {
echo '<i class=' .$row['class']. '></i>';
}
} else {
echo "There Are No Icons At The Moment!";
}
}
}
get_font_class();
Ваш SQL недействителен. Используйте отчеты об ошибках. Также вы открыты для SQL-инъекций, если синтаксис исправлен.
в чем именно проблема?:






Напишите sql как
$sql = "SELECT * FROM fontawesomeicons WHERE name LIKE '%".$searchKeyword."%'" ;
Все еще недействительный SQL ... и SQL-инъекционный ... и вы изменили функциональность likes.
Нет, это верно с точки зрения пользователя. Его вопрос был не в sql-инъекции, а в том, чтобы отобразить результат на странице.
%' не подходит для открытия, а '% не подходит для закрытия. Кроме того, ведущий %, возможно, слишком свободный и не позволяет использовать индексы.
Вы все же изменили функционал. % keyword% будет соответствовать другим результатам, чем ключевое слово%. Однако я бы предпочел, чтобы мы в любом случае не накладывали бандаж на плохой код.
Используйте двойные кавычки после и перед атрибутом класса
include 'dbh.php';
function get_font_class() {
global $conn;
if ( isset($_POST['dataSearchBox']) ) {
$searchKeyword = $_POST['dataSearchBox'];
$sql = ' SELECT * FROM fontawesomeicons WHERE name LIKE ' .$searchKeyword. '%; ';
$result = mysqli_query($conn, $sql);
if ( mysqli_num_rows( $result ) > 0 ) {
while ( $row = mysqli_fetch_assoc( $result ) ) {
echo '<i class = "' .$row['class']. '"></i>';
}
} else {
echo "There Are No Icons At The Moment!";
}
}
}
get_font_class();
Это подвержено риску атак с использованием SQL-инъекций. Не используйте входные данные непосредственно в запросах. Тогда лучше объясните свою настоящую проблему ...