我尝试为我的网站创建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?
答案 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