2014-10-28 95 views
-2

最近我一直有奇怪的問題,我的代碼打得不好,工作一秒鐘,然後不工作!Mysql SELECT query did did work,now does not 2 minutes later(without changes)

我有這個疑問

$stuff_get = mysqli_query($con,"SELECT users.id, users.email, users.hash, users.username FROM users WHERE users.username = '$username' AND users.id=$id4"); 
$gotstuff = mysqli_fetch_array($stuff_get, MYSQL_ASSOC); 

其中規定此錯誤消息

Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, boolean given 

通常,這意味着它只是一般不工作,但它確實工作2分鐘事先(不作任何修改)。

下面是完整的代碼

<?php 
session_start(); 
$username = $_SESSION['userlogin']; 
include("connect.php"); 


$id_get = mysqli_query($con,"SELECT units.id, users.id, users.username FROM units, users WHERE  users.username = '$username' AND units.id = users.id"); 
$gotid = mysqli_fetch_array($id_get); 
$id4 = $gotid["id"]; 

$stuff_get = mysqli_query($con,"SELECT users.id, users.email, users.hash, users.username FROM users WHERE users.username = '$username' AND users.id=$id4"); 
$gotstuff = mysqli_fetch_array($stuff_get, MYSQL_ASSOC); 
$hash2 = $gotstuff['hash']; 
$email2 = $gotstuff['email']; 
$username2 = $gotstuff['username']; 
echo "Your username is ",$username2,"<br>"; 
echo "Your activation code is ",$hash2,"<br>"; 

?> 

這應該是一些電子郵件我在登記時發送的內容,它的工作我第一次測試註冊,但因爲我已經測試了5個在同樣的條件,沒有運氣!

編輯

它現在正

我不知道我是怎樣,沒有改變任何事情。我認爲這是與會議。

+0

您是否直接對數據庫測試原始查詢(即在PHPMyAdmin,CLI中)?結果是什麼? – Elias 2014-10-28 11:09:10

+1

轉義它們的變量,使用準備好的語句! – Jite 2014-10-28 11:11:15

+0

@Elias我不能做具體的查詢,因爲它包含變量?我使用了特定的ID和用戶名,並且它通過罰款 – 2014-10-28 11:12:36

回答

0

加載結果後,您必須檢查它是否成功。因爲服務器總是有可能消失,或者沒有可用的空閒連接。

如果是這種情況,那麼mysqli_query將返回false,這似乎是您所遇到的行爲。

$username = mysqli_real_escape_string($username); 
$id4 = mysqli_real_escape_string($id4); 

$stuff_get = mysqli_query($con, 
    "SELECT users.id, users.email, users.hash, users.username 
    FROM users 
    WHERE 
     users.username = '$username' 
     AND users.id=$id4"); 

if ($stuff_get) 
{ 
    $gotstuff = mysqli_fetch_array($stuff_get, MYSQL_ASSOC); 
} 
else 
{ 
    throw new \Exception('Could not retrieve result.'); 
} 

(注:運行查詢之前,我在逃避你的參數......只是要確保它不會被遺忘,當有人複製/粘貼代碼順便說一句,你可以考慮切換到準備好的發言......更容易使用。 ,並且更安全。)

+0

我認爲這是因爲會議沒有開始,因爲它工作正常,如果我已經登錄,而不是註冊時! – 2014-10-28 11:19:44

+0

@RyanMckenna:這可能是潛在的問題,但你的問題是關於MySQL查詢/結果,所以這就是我的回答。 – lxg 2014-10-28 15:37:50