php mysql返回错误的布尔结果

时间:2015-06-02 09:36:50

标签: php mysqli

我有以下查询:

'SELECT Active FROM tbUsers WHERE Id=55'

ID是唯一的,我只需知道用户的状态是肯定的是或否。 Column Active在Mysql

中设置为boolean

当我尝试返回如下结果时(使用另一个php函数):

$result = $this->selectRow($db,"tbClass","Active","Id='$Id'");
if($result) { return "ok" ; } else { return "nok" ;)

它返回' ok'两个案件。 知道它有什么问题吗?

这是另一个功能:

public function selectRow($db,$tableName,$field,$where) {
        if($where == "") {
            $query = "SELECT $field FROM $tableName";
        }
        else
        { $query = "SELECT $field FROM $tableName WHERE $where"; }

        $result=$db->Qry($query);


        if ($result) {
            $no_of_rows =  $db->TotRows($result);
            if($no_of_rows == 1) {
                return $result;
            }
            if($no_of_rows == 0) {
                return '';
            }
            if($no_of_rows < 0) {
                die('Invalid query: ' . $sender ."(".$query  ."): ".mysql_errno().": ". mysql_error());
                return '';
            }
        } 
        else {
            die('Invalid query: ' . $sender .": " .$query.": ". mysql_errno().": ". mysql_error());
            return '';
        }
    }

Qry功能如下:

function Qry($sql) {
    if($result = mysqli_query($this->con,$sql) ) {
        return $result;
    }
    else 
    {
        $err = "Error: ".$sql. " :: ". mysqli_error;
        die("$err");
    }
}

2 个答案:

答案 0 :(得分:0)

我认为你需要改变这种情况。

 $result=$db->Qry($query);
  

始终返回查询对象

只需删除此条件并

您需要count number of affected row

<?php

public function selectRow($db, $tableName, $field, $where) {
    if ($where == "") {
        $query = "SELECT $field FROM $tableName";
    } else {
        $query = "SELECT $field FROM $tableName WHERE $where";
    }

    $result = $db->Qry($query);



    $no_of_rows = $db->TotRows($result);
    if ($no_of_rows == 1) {
        return $result;
    }
    if ($no_of_rows == 0) {
        return FALSE;
    }
    if ($no_of_rows < 0) {
        die('Invalid query: ' . $sender . "(" . $query . "): " . mysql_errno() . ": " . mysql_error());
        return FALSE;
    }
}

答案 1 :(得分:0)

好的,$result是一个mysqli_result对象 您可能想要获取该结果的第一行并返回所需的列。

替换

return $result;

return $result->fetch_assoc()[$field];