SELECT不选择

时间:2014-05-16 13:47:30

标签: php mysql mysqli

我尝试为我的网站创建user_login系统。现在我遇到了使用mysqli和prepared语句从数据库中选择user_info的问题。 我的问题是,我无法获得任何输出。但我正在使用php.net上的手册。 以下是我得到的那一刻:

<?php
require_once 'php/includes/constants.php';

$connection = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME)or die("Error");

$phone = "0661488342";
$password = "1234";

$query = " SELECT * 
            FROM userinfo
            WHERE phone = ? AND password = ?
            LIMIT 1";

$stmt = $connection->prepare($query);
$stmt->bind_param('ss', $phone, $password);

$stmt->execute();

$res = $stmt->get_result();
$row = $res->fetch_assoc();

echo "Password = ".$row['password'];

错误:

  

在Z:...

中调用未定义的方法mysqli_stmt :: get_result()
你可以告诉我一些关于这件事的事吗?

第1版 PHP版本是5.2.12。(对不起,我忘了这个) 但问题仍然存在。我怎样才能获得user_info?

3 个答案:

答案 0 :(得分:0)

你的PHP版本和mysql版本是什么? 您应该在此处了解有关MySQLi的更多信息:http://www.php.net/manual/en/book.mysqli.php

答案 1 :(得分:0)

你需要PHP 5.3.0,而且这个方法需要mysqlnd驱动程序。其他人你会得到这个错误:

 Call to undefined method mysqli_stmt::get_result()

这似乎正在发生在你身上。

答案 2 :(得分:-1)

您的SQL中存在错误,您可以通过检查错误来检测错误(在这种情况下,它会输出错误,但有更好的方法来处理错误。

if (!$stmt->execute()) {
    echo "Execute failed: (" . $stmt->errno . ") " . $stmt->error;
}

if (!($res = $stmt->get_result())) {
    echo "Getting result set failed: (" . $stmt->errno . ") " . $stmt->error;
}

$row = $result->fetch_row()

在您的情况下,password列名称是MySQl中的保留字(有PASSWORD函数)。您的SQL应该回拨列名和表名:

$query = " SELECT * 
           FROM `userinfo`
           WHERE `phone` = ? AND `password` = ?
           LIMIT 1";

最后,看起来你正在明确地输入密码,这意味着你做错了。见PHP The Right Way: Password Hashing