我有一个SQL查询,如下所示:
$tagID = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'");
echo $tagID;
我希望$ tagID包含类似3或5或任何整数的内容。但当我回应它时,输出是:
resource id #4
如何将其设为简单整数?
答案 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扩展的关键改进是:
- 面向对象的界面
- 支持准备好的陈述
- 支持多种语句
- 支持交易
- 增强的调试功能
- 嵌入式服务器支持
醇>
同样来自文档:
如果您使用的是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;列是您要从中提取数据的列)
希望这有帮助。