Хорошо, поэтому у меня есть этот поиск по веб-сайту script, и я пытаюсь подсчитать, сколько записей будет отображаться, когда пользователь вводит туда термин поиска или условия. Мне было интересно, как я смогу это сделать, когда я не знаю, какие ключевые слова будут введены?
Ниже приведен мой поисковый запрос.
Вот часть моего кода поиска PHP и MySQL.
$search_explode = explode(" ", $search);
foreach($search_explode as $search_each) {
$x++;
if($x == 1){
$construct .= "article_content LIKE '%$search_each%' OR title LIKE '%$search_each%' OR summary LIKE '%$search_each%'";
} else {
$construct .= "OR article_content LIKE '%$search_each%' OR title LIKE '%$search_each%' OR summary LIKE '%$search_each%'";
}
}
$construct = "SELECT users.*, users_articles.* FROM users_articles
INNER JOIN users ON users_articles.user_id = users.user_id
WHERE $construct";
Вот первая ошибка.
MySQL Error: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'SELECT users.*, users_articles.* FROM users_articles INNER JOIN users O' at line
Вот вторая ошибка.
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given
Сохраните часть вашего SQL-запроса после FROM
в переменной, затем вы можете использовать COUNT(*)
для получения количества строк:
$search_explode = explode(" ", $search);
foreach($search_explode as $search_each) {
$x++;
if($x == 1){
$construct .= "article_content LIKE '%$search_each%' OR title LIKE '%$search_each%' OR summary LIKE '%$search_each%'";
} else {
$construct .= "OR article_content LIKE '%$search_each%' OR title LIKE '%$search_each%' OR summary LIKE '%$search_each%'";
}
}
$from = "FROM users_articles
INNER JOIN users ON users_articles.user_id = users.user_id
WHERE $construct";
$count_query = "SELECT COUNT(*) " . $from;
$result = mysql_query($count_query);
$count_result = mysql_fetch_row($result);
$count = $count_result[0];
mysql_fetch_row($result)[0]
не является допустимым синтаксисом PHP. Вы должны сохранить массив строк в переменной, прежде чем получить доступ к ее индексу.
Вы также можете взглянуть на mysql_num_rows()