2011-02-16 52 views
3

整数输出我有一个SQL查询,如下所示:如何从一个SQL查询

$tagID = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'"); 
    echo $tagID; 

我想$标签识别包含类似3或5,或任何整数。但是,当我回应它时,输出是:

resource id #4 

我怎样才能使它成为一个简单的整数?

+0

** *确切*与任何其他类型相同的方式。 – 2011-02-16 17:39:12

+1

评论只是为了确保你看到它,请看看MySQLi。这是一个更好的解决方案。 – Stephen 2011-02-16 17:49:22

回答

6
$result = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'"); // figure out why an existing tag gets the ID zero instead of 'tagID' 
$row = mysql_fetch_assoc($result); 
echo $row["tagID"]; 

mysql_query()返回结果资源,而不是查询中的值。您必须使用fetch functions来获取实际数据。 (查找错误)和$row不是false(找不到)。

+2

sql注入漏洞解决方案获得接受和upvoted。为什么我不感到惊讶? – 2011-02-16 18:42:01

1

你错过了一个单一的步骤。试试这个:

$resource = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'"); 
$tagID = mysql_fetch_assoc($resource); 

print_r($tag_id); 

如果查询返回不止一行(即有不止一个标签使用相同的标签名),你会希望把它放在一个循环:

$resource = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'"); 
while($tagID = mysql_fetch_assoc($resource)) { 
    echo $tagID['tagID']; 
} 

附录

虽然上面的代码可以解决您的问题,但我强烈建议您在此停下来,然后了解mysqli。这是一个比使用mysql_*功能更新,更强大的解决方案。从文档:

mysqli扩展,或者正如有时被称为MySQL改进的扩展,是为了利用MySQL系统版本4.1.3和更新版本中的新特性而开发的。 PHP版本5及更高版本包含mysqli扩展。

mysqli扩展具有许多优点,在MySQL扩展是关键的增强功能:

  1. 面向对象的接口
  2. 支持预处理语句
  3. 支持多个语句
  4. 支持用于交易
  5. 增强的调试功能
  6. 嵌入式服务器支持
从文档

另外:

如果你正在使用MySQL版本4.1.3或更高版本是强烈建议您使用[和mysqli]扩展。

0

SQL查询总是返回一个SQL资源结果,这是一个可疑的不可读的对象,其中包含查询结果。由于存储数据库的方式,用户可能希望操作数据的方式以及数据量巨大,因此将其存储为标识符而不是对象更容易。

来获取数据,你需要,你必须先将其转换为一个数组:

$result = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'"); 
$row = mysql_fetch_assoc($result); 
echo $row["tagID"]; 

(其中$行[专栏]是你想从(

提取数据的列或对象:

$result = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'"); 
$object = mysql_fetch_object($result); 
echo $object->tagID; 

(其中$对象 - >列是你想从其中提取数据的列)

^h这有助于。

1

mysql_query函数本身在成功时返回'resource',在错误时返回false。在这种情况下,您将获得id为#44的资源,这是您可能期望从该函数获得的资源。

你可以做的是取出mysql_query的结果并使用mysql_fetch_assoc将资源转换为关联数组。 (也可以查看mysql_fetch_row或者其他技术的mysql_fetch_field)。以下是构建此问题的典型方法:

$query = "SELECT tagID FROM tags WHERE tagName = '$tag'"; 
$result = mysql_query($query); 
$array = mysql_fetch_assoc($result); 

$tagID = $array['tagID']; //your integer. 

有关详细信息,请参阅the mysql_query PHP Manual entry。查看底部的用户注释以获得特别好的建议和示例代码。

3

看到没有一个程序员在答案中总是令人震惊。
我知道OP也不是程序员,所以,我的回答完全是徒劳,但是到底是什么。

这里是被称为函数的事情例如:

<? 
function dbgetvar(){ 
    $args = func_get_args(); 
    $query = array_shift($args); 
    foreach ($args as $key => $val) { 
    $args[$key] = "'".mysql_real_escape_string($val)."'"; 
    } 
    $query = vsprintf($query, $args); 

    $res = mysql_query($query); 
    if (!$res) { 
    trigger_error("dbgetarr: ".mysql_error()." in ".$query); 
    return FALSE; 
    } else { 
    $row = mysql_fetch_row($res); 
    if (!$row) return NULL; 
    return $row[0]; 
    } 
} 

这段代码可以被保存在一些配置文件,然后叫以这种方式:

$tagID = dbgetvar("SELECT tagID FROM tags WHERE tagName = %s",$tag); 
echo $tagID;