MYSQLi查询没有产生预期的结果

时间:2013-05-16 21:14:48

标签: mysqli

我在查询中可以使用的结果出现问题。代码:

    //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)获得结果,但我显然在这里做错了。我无法填充变量,也不知道为什么。任何帮助,将不胜感激。 干杯

1 个答案:

答案 0 :(得分:1)

您正在遍历生成的行,直到没有更多结果,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();