Как я могу заставить работать num_rows для этого запроса select? - PullRequest
0 голосов
/ 24 октября 2019

ОК, у меня странная проблема. Мой num_rows не работает, я все перепробовал.

Итак, идея в том, что если в базе данных нет выбранных строк, то должно отображаться <div>. Но это не так.

У меня нет сообщений об ошибках, поэтому я не знаю, что я могу сделать.

<?php
    $query = $this->db->query("SELECT null FROM donations WHERE donateName = ? ORDER BY donateID DESC LIMIT 1", array(getUserData($this->session->userdata('logged_in')["id"], "name")));
    foreach($query->result() as $row) {
        if(!$query->num_rows()) { ?> 
<div class="col-lg-4">
                <div class="card">
                                            <div class="card-header">
                                                    <h5 class="card-header-text">I</h5>
                                            </div>

                                            <div class="card-block">
                        <ul style="margin-left: 25px; list-style: initial;">

                        <br><li>test</li>
                        </ul>
                                            </div>
                                    </div>
            </div>
        <?php } } ?>

Ответы [ 3 ]

0 голосов
/ 24 октября 2019

Вы должны просто удалить

foreach($query->result() as $row) {

(и закрыть }).

, так как это обычно будет циклически повторять набор результатов. Вы просто хотите сказать, что строк нет, поэтому просто укажите if.

. Вы также можете удалить ORDER BY donateID из SQL, поскольку в действительности не имеет значения, в каком порядке они возвращаются.

0 голосов
/ 25 октября 2019

Если вы используете codeigniter, тогда вам может понравиться этот формат запроса.

// Model
function get_count($table, $where = array(), $fields = false) {  
    // echo"<pre>";print_r($where);exit;      
    if (!$fields) {
        $fields = '*';
    }
    $this->db->select($fields);
    $this->db->from($table);
    $this->db->where($where);

    $query = $this->db->get();
    // echo $this->db->last_query();exit;
    return $query->num_rows();
}

Вызовите функцию, предоставив необходимые аргументы, например

// Controller
$table = 'mytalbe';
$where = array(
  'id' => '34' // for example
);
$count = get_count($table, $where);

Надеюсь, это поможет вам в будущемповторно использовать код.

0 голосов
/ 24 октября 2019

Извините, я решил отредактировать свой ответ, так как был не прав.

Вам просто нужно удалить foreach -loop.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...