2013-05-16 144 views
0

我遇到問題,可以從我的查詢中使用結果。代碼: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

您正在循環所產生的行,直到沒有更多結果,並且fetch_array()(因此$row)爲NULL;

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

...所以...

​​

...也就不足爲奇了:)

一個簡單的方法來做到這一點會是這樣的(不能試運行這一點,所以多看作爲一個提示,你應該真的參數化查詢)

$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(); 
+0

你能SH請告訴我如何糾正這一點。我使用Google搜索並且似乎無法提出可行的解決方案。我對此很新。歡呼聲 – Spud

+0

@Spud請參閱編輯。 –

+0

謝謝。我看到它後很明顯。乾杯 – Spud