2012-11-12 135 views
0

我正在從我的數據庫中選擇數據,並且仍在說我在遊戲中。當我不是,爲我檢查。PHP和MySQL從數據庫中選擇

任何線索如何解決這個問題?

 $moneda = (CMS == 'uber' ? $users->GetUserVar(USER_ID, moneda) : $myrow[moneda]); 
     $isonline = mysql_query("SELECT `online` FROM `users` WHERE `username` = ".$_POST['Naam'].""); 
     $error = array(); 
     if($isonline == 1) 
       $error[] = "De ander moet uit het hotel gaan voordat je belpixels kunt overschrijven."; 
+3

您的代碼對於SQL注入非常有用。請先解決這個問題。見[這裏](http://stackoverflow.com/questions/60174/best-way-to-prevent-sql-injection-in-php) –

+0

'$ isonline'從你的查詢中獲得結果集 - 只會如果SQL查詢失敗,則爲false。你需要首先獲得查詢的輸出,像mysql_fetch_array。 – andrewsi

+0

那麼最好的方法是如何保護它,我沒有得到「看到這裏」頁面的線索。 –

回答

1
$isonline = mysql_query("SELECT `online` FROM `users` WHERE `username` =".$_POST['Naam'].""); 

$ isonline是不是你的answer..dude它包含結果對象,而不是結果。

$row=mysql_fetch_assoc($isonline); 
if($row['online']==1){} 

和使用的mysql_query是長期棄用,改用PDO

$isonline = mysql_query("SELECT online FROM ..

SQL你從來沒有把周圍的列名報價...擺脫那些的並且在用戶名值附近得到一個:

$isonline = mysql_query("SELECT online FROM users WHERE username ='".$_POST['Naam']."'"); 
+0

這不是爲我工作讓我告訴你整個代碼,也許你可以做些什麼? –

+0

'' –

+0

擺脫''在線 – geekman

0

mysql_query永遠不會返回單個用戶記錄;它會返回一個PHP資源,即使您知道SQL查詢只會返回一條記錄。

換句話說:$ isonline不是該變量的正確名稱。取名類似$ online_query_results,然後調用

$user_record = mysql_fetch_array($online_query_results); 

這將返回第一個(在這種情況下,只),結果行。然後,代替測試$ isonline,測試

$user_record['online'] 
+0

這也不起作用。如果用戶在遊戲中,它應該返回一個錯誤,當在線數據庫設置爲1時,該錯誤仍然不會發生。 –

+0

您可以在此代碼中放入日誌記錄語句,以查看您的db_query語句實際返回的內容或從mysql_fetch_array?例如:'printr($ user_record)'? (切勿在活動網站上使用printr對數據庫記錄結果;輸出將包含數據庫用戶名和密碼)。 如果建議的更改不起作用,最可能的原因是因爲數據庫查詢正在返回零對象或空對象。 – chapka

+0

請發佈您現在使用的實際查詢字符串。如果你使用這個查詢字符串它工作嗎? - > 'SELECT online FROM {users} WHERE username = {$ _POST ['Naam']}' – chapka