Php 选择不选择

Php 选择不选择,php,mysql,mysqli,Php,Mysql,Mysqli,我正在尝试为我的网站创建用户登录系统。现在我在使用mysqli和prepared语句从数据库中选择用户信息时遇到了问题。 我的问题是,我无法获得任何输出。但是我正在使用php.net上的手册。 以下是我现在得到的: <?php require_once 'php/includes/constants.php'; $connection = new mysqli(DB_SERVER, DB_USER, DB_PASSWORD, DB_NAME)or die("Error"); $phon

我正在尝试为我的网站创建用户登录系统。现在我在使用mysqli和prepared语句从数据库中选择用户信息时遇到了问题。 我的问题是,我无法获得任何输出。但是我正在使用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'];

您的PHP版本和mysql版本是什么?
您应该在这里了解有关MySQLi的更多信息:

您需要PHP5.3.0,而且此方法还需要mysqlnd驱动程序。否则将出现以下错误:

 Call to undefined method mysqli_stmt::get_result()

这似乎就是发生在您身上的情况。

您的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版本是什么?
mysqli_stmt::get_result()
是在PHP 5.3中引入的,为什么要使用这么旧的PHP版本?5.2缺少现代PHP功能,不再受支持。我的问题不是错误!而是获取数据数组的正确方法!是的,pass不是md5ed,但这只是测试版,我只是在研究。即使MD5对于密码存储也不安全,一个如果你在学习,没有什么比第一次学习正确的方法更好。