函数返回布尔值而不是字符串

时间:2014-08-15 15:30:02

标签: php mysql

我想要的是在数组中返回MYSQL查询,但是我的代码返回一个bool(true) 这是code.php

中的代码
require('model.php');

$id = $_POST['id'];
$password = $_POST['password'];

$user = new user();

$row = $user->check_user($id, $password);
var_dump($row);

以下是model.php的代码

class config {

    public $dbhost = "localhost";
    public $dbuser = "root";
    public $dbpass = "";
    public $dbused = "dbname";

    function dbconn() {

        $conn = mysqli_connect($this->dbhost,$this->dbuser,$this->dbpass,$this->dbused);

        if(mysqli_connect_errno()) {

            printf("Connection failed: " . mysqli_connect_error());
            exit();

        }

        return $conn;

    }

}

class user {

    function check_user($id, $pass) {

        $config = new config();

        $conn = $config->dbconn();

        $query = $conn->prepare("SELECT id, password, status FROM e_users WHERE id = ? AND password = ?");

            $query->bind_param('is', $id, $pass);

            try {

                $query->execute();

                return $query->fetch();

            } catch(PDOException $e) {

                die($e->getMessage());

            }

    }

}

我认为问题出在$query->fetch();,因为我尝试了return 'test';,但效果很好。即使返回一个数组工作正常。

任何人都可以帮助我吗?

1 个答案:

答案 0 :(得分:1)

正如蓝狗指出的那样,fetch()返回一个状态标志,而不是行本身。但是fetch_assoc()会返回一行。

看看这里:

http://php.net/manual/en/mysqli-stmt.fetch.php

如果使用fetch,则需要绑定变量:

$stmt->bind_result($mySelectedValue_1, $mySelectedValue_2);

以下是fetch_assoc()的示例:

http://php.net/manual/de/mysqli.quickstart.prepared-statements.php

所以这应该可以正常工作:

$row = $res->fetch_assoc();