2014-05-16 38 views
-2

我試圖爲我的網站創建user_login系統。現在我遇到了從數據庫中選擇user_info的問題,使用mysqli和準備好的語句。 我的問題是,我無法獲得任何輸出。但我在php.net上使用手冊。 以下是我已經得到了片刻:SELECT不會選擇

<?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']; 

錯誤:

Call to undefined method mysqli_stmt::get_result() in Z:...

你能告訴我一些關於這個?

版1 PHP版本5.2.12是(對不起,我忘了這) 但問題依然如故。我怎樣才能得到user_info?

+2

什麼是您的PHP版本? 'mysqli_stmt :: get_result()'是在PHP 5.3中引入的。 –

+0

爲什麼使用這樣一箇舊版本的PHP? 5.2在現代PHP功能中非常缺乏,而且不再支持它。 –

+0

我的問題不是關於錯誤!這是關於獲取數據數組的正確方法! – Animus

回答

0

您需要安裝PHP 5.3.0,並且此方法還需要mysqlnd驅動程序。另外你會得到這個錯誤:

Call to undefined method mysqli_stmt::get_result() 

這是什麼似乎正在發生在你身上。

-1

你在你的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將會BACKTICK列名和表名:

$query = " SELECT * 
      FROM `userinfo` 
      WHERE `phone` = ? AND `password` = ? 
      LIMIT 1"; 

最後,它看起來像你在晴朗的stroing密碼,這意味着你做錯了。請參閱PHP The Right Way: Password Hashing

+0

是的,pass不是md5ed,但這只是beta,而我只是在學習。 – Animus

+0

即使MD5對於密碼存儲來說也不安全,如果你正在學習,沒有什麼比第一次學習正確的方式更好。 –