如何使num_rows用于此选择查询?

时间:2019-10-24 19:04:53

标签: php mysql codeigniter

好的,所以我有这个奇怪的问题。我的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 :(得分:0)

对不起,由于我错了,我决定编辑答案。

您只需要删除foreach循环即可。

答案 1 :(得分:0)

您应该删除

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

(并关闭})。

,因为这通常是遍历结果集。您只想说没有行,所以只有if

您也可以从SQL中删除ORDER BY donateID,因为它们返回的顺序并不重要。

答案 2 :(得分:0)

如果您使用的是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);

希望这会在将来帮助您重用代码。