-1

我在获取可以从查询中使用的结果时遇到问题。代码:

    //Create query
$stmt = $con->stmt_init();
$query = "SELECT * FROM `users` WHERE `userlogin` = '$username' AND `user_passwrd` = sha1(CONCAT('$userpw', `stamp`))"; 
$result = $con->query($query);
$rows = array();
if($stmt->prepare($query)) {
    if($stmt->execute()) {
        while($row = $result->fetch_array()) { 
            $rows[] = $row;
        }
    }
}
$result->free();
var_dump($row); //Returns NULL
die();
$num = mysqli_num_rows($result);
$ulogin = $row['userlogin'];
$pending = $row['pending'];
$acclvl = $row['user_accesslevel'];

我可以使用 var_dump($rows) 获得结果,但我显然在这里做错了。我无法填充变量,也不知道为什么。任何帮助,将不胜感激。干杯

4

1 回答 1

0

您正在遍历结果行,直到没有更多结果并且fetch_array()(因此$row)为 NULL;

while($row = $result->fetch_array()) { 
    $rows[] = $row;
}

...所以...

var_dump($row); //Returns NULL

......不再是一个惊喜了:)

一个简单的方法是这样的(不能测试运行这个,所以看到更多作为提示,你应该真正参数化你的查询)

$query = "SELECT * FROM `users` WHERE `userlogin` = '$username' AND `user_passwrd` = sha1(CONCAT('$userpw', `stamp`))"; 
$result = $con->query($query);
if(!$result)
   die("horribly");
$row = $result->fetch_array()
$result->free();
于 2013-05-16T21:19:20.403 回答