PHP & MySQL - Как посчитать количество записей

0

Хорошо, поэтому у меня есть этот поиск по веб-сайту 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
  • 0
    Побег ваш вклад! mysql_real_escape_string , если вы не хотите полностью использовать PDO и подготовленные операторы. Другого способа избежать больших ошибок и взлома нет.
  • 0
    Я знаю все о том, что я оставил это из своего кода, хотя знаю, спасибо
Теги:

2 ответа

2
Лучший ответ

Сохраните часть вашего 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];
  • 0
    Как бы я это сделал? извините за мое невежество.
  • 1
    mysql_fetch_row($result)[0] не является допустимым синтаксисом PHP. Вы должны сохранить массив строк в переменной, прежде чем получить доступ к ее индексу.
Показать ещё 1 комментарий
1

Вы также можете взглянуть на mysql_num_rows()

  • 0
    +1. Если запрос простой, выполнение двух может быть нормальным. Но если запрос сложный, а вы не делаете нумерацию страниц, это лучший способ.
  • 0
    @Matchu Я делаю нумерацию страниц, просто не могу сосчитать количество строк.
Показать ещё 4 комментария

Ещё вопросы

Сообщество Overcoder
Наверх
Меню