整数输出我有一个SQL查询,如下所示:如何从一个SQL查询
$tagID = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'");
echo $tagID;
我想$标签识别包含类似3或5,或任何整数。但是,当我回应它时,输出是:
resource id #4
我怎样才能使它成为一个简单的整数?
整数输出我有一个SQL查询,如下所示:如何从一个SQL查询
$tagID = mysql_query("SELECT tagID FROM tags WHERE tagName = '$tag'");
echo $tagID;
我想$标签识别包含类似3或5,或任何整数。但是,当我回应它时,输出是:
resource id #4
我怎样才能使它成为一个简单的整数?
$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
(找不到)。
sql注入漏洞解决方案获得接受和upvoted。为什么我不感到惊讶? – 2011-02-16 18:42:01
你错过了一个单一的步骤。试试这个:
$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扩展是关键的增强功能:
- 面向对象的接口
- 支持预处理语句
- 支持多个语句
- 支持用于交易
- 增强的调试功能
- 嵌入式服务器支持
另外:
如果你正在使用MySQL版本4.1.3或更高版本是强烈建议您使用[和mysqli]扩展。
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这有助于。
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。查看底部的用户注释以获得特别好的建议和示例代码。
看到没有一个程序员在答案中总是令人震惊。
我知道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;
** *确切*与任何其他类型相同的方式。 – 2011-02-16 17:39:12
评论只是为了确保你看到它,请看看MySQLi。这是一个更好的解决方案。 – Stephen 2011-02-16 17:49:22