如何从SQL查询中获取整数输出

时间:2011-02-16 17:31:08

标签: php sql mysql

我有一个SQL查询,如下所示:

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

我希望$ tagID包含类似3或5或任何整数的内容。但当我回应它时,输出是:

resource id #4

如何将其设为简单整数?

5 个答案:

答案 0 :(得分: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来获取实际数据。

如果您希望此代码更清晰,请检查$result是否false(查询错误)且$row不是false(找不到任何内容)。

答案 1 :(得分:3)

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

以下是一个名为 a function:

的事例
<?
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;

答案 2 :(得分:1)

你错过了一步。试试这个:

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

print_r($tag_id);

如果您的查询返回多行(即,有多个标签具有相同的tagName),您将需要将其置于循环中:

$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及更高版本中的新功能而开发的。 mysqli扩展包含在PHP 5及更高版本中。

     

mysqli扩展有许多好处,对mysql扩展的关键改进是:

     
      
  1. 面向对象的界面
  2.   
  3. 支持准备好的陈述
  4.   
  5. 支持多种语句
  6.   
  7. 支持交易
  8.   
  9. 增强的调试功能
  10.   
  11. 嵌入式服务器支持
  12.   

同样来自文档:

  

如果您使用的是MySQL 4.1.3或更高版本,建议您使用[MySQLi]扩展名 强烈

答案 3 :(得分: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。查看底部的用户评论,以获得特别好的建议和示例代码。

答案 4 :(得分:0)

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

要获取数据,您需要先将其转换为数组:

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

(其中$ row [column]是您要从中提取数据的列(

或对象:

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

(其中$ object-&gt;列是您要从中提取数据的列)

希望这有帮助。