2011-09-03 126 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