PHP预处理语句的Fetch_array替代方案

时间:2012-01-29 01:21:04

标签: php mysql prepared-statement fetch

更新

        $stmt = $this->db->prepare("
SELECT u.id,    u.fname,    u.lname,    u.mname,  u.type, u.email, u.salt,
       u.pass,  u.salt,     u.approved, u.ban,      u2.status
FROM `users` AS u
    LEFT OUTER JOIN `log` AS u2
        ON u2.user_id = u.id
WHERE u.email = ? LIMIT 1") or die($this->db->error);

        $stmt->bind_param("s", $_POST['email']) or die($stmt->error);
        $stmt->execute();
        $stmt->store_result();
        if ($stmt->num_rows == 0) {
            die($this->ajax->respond(7));
        }
        $result = $stmt->get_result();
        $data = $result->fetch_array(MYSQLI_BOTH);

尝试获取数组,但最后一行出现以下错误

Fatal error: Call to a member function fetch_array() on a non-object

无法让它发挥作用。请帮忙

3 个答案:

答案 0 :(得分:0)

mysqli_stmt::execute不会返回结果,只会返回truefalse。您从mysqli_stmt对象本身获取结果。请仔细阅读http://php.net/manual/en/mysqli-stmt.execute.phphttp://php.net/manual/en/mysqli-stmt.fetch.php上的示例。

答案 1 :(得分:0)

使用get_result(),您可以从执行的语句中获取结果集:

    $stmt->execute();
    $result = $stmt->get_result();
    while ($row = $result->fetch_array(MYSQLI_BOTH))
    {

答案 2 :(得分:0)

 $data = $stmt->fetchAll();

PDO为此目的提供了这个美丽的功能。

编辑:我认为这是PDO界面。为什么你不使用pdo?我发现它比mysqli舒服。