2011-09-03 124 views
0

我想這個查詢:僅查詢工作的phpMyAdmin

//connect; 

$site = mysql_real_escape_string($_GET['site']); 

$data = mysql_query("SELECT * FROM Items WHERE Site = '$site'"); 

while($row = mysql_fetch_array($data)) 
    { 
    print $row['type']; 
    } 

不顯示任何信息,運行SELECT * FROM Items WHERE Site = 'http://rollingstone.com/'從PHPMyAdmin中返回一行。

我確定它一定是一些非常基本的東西,因爲我沒有太多的MySQL經驗。

我想在這裏順便說一句:http://www.chusmix.com/game/insert/get-items.php?site=http://rollingstone.com/

我在做什麼錯?

回答

2

確保$site實際上包含某物;在你的mysql_query()應該告訴你這個之前快速做一個echo $site。如果它爲空,請嘗試print_r($_GET)以查看它是否在$_GET陣列中。它應該是,但它可能沒有其他原因;檢查此片段上方的任何代碼是否有任何修改$_GET$_REQUEST的內容。

要從MySQL表中請求數據,您需要使用mysql_connect()連接到服務器,然後使用mysql_select_db()選擇數據庫。 PHP 應該拋出錯誤,但可以肯定把這些線在你的腳本的頂部:

error_reporting(E_ALL); 
ini_set('display_errors', '1'); 

所有錯誤現在將顯示。

此外,您還可以測試使用mysql_num_rows()返回了多少行。例如:

if(mysql_num_rows($data) !== false) 
{ 
    while(...) 
    { 
     ... 
    } 
} 
else 
{ 
    echo "No rows"; 
} 

如果查詢沒有任何結果,則回顯No rows。這是所有錯誤檢測代碼;你錯誤的原因並不明顯,所以需要使用上述方法進行一些調查(以及任何你可以想到的)。

+0

我試過了,它返回true,但WHILE不起作用。所以存在這個問題。但我不知道我做錯了什麼。 – lisovaccaro

+0

我可以推薦的唯一方法是在'while()'循環中加入'print_r($ row)'。我有一種感覺,這將返回一個空陣列,但如果沒有,這是一個開始! – Bojangles

+0

我檢查了錯誤,沒有意識到我沒有,我得到:'錯誤:你的SQL語法有錯誤;檢查對應於你的MySQL服務器版本的手冊,在第1行'Resource id#2'附近使用正確的語法' – lisovaccaro

0

您是否首先在連接上調用了mysql_select_db('your_database_name');?您是否嘗試在執行SQL之前回顯SQL,以確認該網站是您期望的?

+0

我回應了站點和$數據。 http://www.chusmix.com/game/insert/get-items.php?site=http://rollingstone.com/ 網站是回聲好的數據回聲資源ID#2 – lisovaccaro

+0

是PHP能夠看到「類型「列? 用[/ * get列元數據* /'在[本頁](http://php.net/manual/en/function.mysql-fetch-field.php)註釋中的代碼嘗試我的代碼。檢查'Items'中的所有列是否顯示正常。 –

+0

我檢查了錯誤,沒有意識到我沒有,我得到:錯誤:你的SQL語法有錯誤;檢查與您的MySQL服務器版本相對應的手冊,在第1行'Resource id#2'附近使用正確的語法 – lisovaccaro

0
$query = sprintf("SELECT * FROM Items WHERE Site ='%s'", 
    mysql_real_escape_string($site)); 
$result = mysql_query($query); 

只是爲了安全起見(避免SQL Injections)。

+0

我檢查了錯誤,沒有意識到我沒有,我得到:Error:You have你的SQL語法錯誤;請檢查與您的MySQL服務器版本相對應的手冊,以找到在第1行「資源ID#2」附近使用的正確語法 – lisovaccaro