使用mysqli :: bind_result()从列中提取数据

时间:2014-05-02 00:00:58

标签: php mysql sql mysqli

我的查询在我的php代码中返回null,但是当我在phpmyadmin中输入相同的查询时,它返回它所属的行。这是我正在使用的数据库

CREATE TABLE `payment`.`users`(
`u_id` int(12) NOT NULL AUTO_INCREMENT,
`email` varchar(255) NOT NULL,
`passwd` varchar(100) NOT NULL,
PRIMARY KEY (`id`),
UNIQUE KEY (`email`)
) ENGINE=MyISAM;

这是我正在使用的代码,当它在phpmyadmin中清楚地工作时返回null。

function getUserId($email, $passwd) {
 $mysqli = db_connect();

 $query = "SELECT `u_id` FROM `payment`.`users` WHERE `email`='$email' AND `passwd`='$passwd' ORDER BY 1";
if ($stmt = $mysqli->prepare($query)) {

    /* execute query */
    $stmt->execute();

    $stmt->bind_result($u_id);

    while ($stmt->fetch()) {
        return $u_id;
    }
}

}

1 个答案:

答案 0 :(得分:-1)

问题是你在php代码中使用变量来设置值。在phpMyAdmin中,您直接插入值,因此问题可能在插入的值中。

首先使用 PDO bindParam() mysqli 的{{3他们清理输入并帮助您避免bind_param()的语句。 使用预准备语句和绑定参数的第二个好处是,您可以指定绑定到查询的数据类型,在大多数情况下,这将解决此类问题。虽然在你的情况下,你可能正在插入字符串。