-1

我正在尝试从我的用户表中接收一个 Id。我有:

$retrieve_id = "SELECT userid FROM tb_users WHERE username = '$username'";
$user_id = intval(mysql_query($retrieve_id));

该语句应返回 1,因为这是表中的值。但是,它返回 6,这是列名 ( userid) 的长度。当我查询其他表时也会发生这种情况。

如何仅从表中检索值?

4

5 回答 5

4

您需要使用或从查询中获取实际结果。mysql_resultmysql_fetch_*

$result = mysql_query("SELECT userid FROM tb_users WHERE username = '$username'");

if (!$result) {
    die('Could not query:' . mysql_error());
}

$user_id = mysql_result($result, 0); // outputs first row

请注意,所有mysql_功能均已弃用,您应该使用mysqli_or PDO。您的查询也对 SQL 注入开放。

于 2013-10-08T14:17:15.210 回答
1

http://php.net/manual/en/function.mysql-query.php

mysql_query 返回资源而不是值。

$retrieve_id = "SELECT userid FROM tb_users WHERE username = '$username'";
$result = mysql_fetch_assoc(mysql_query($retrieve_id));
$user = $result['userid'];
于 2013-10-08T14:18:14.783 回答
0

函数 mysql_query 返回选择查询的资源类型。对于结果,您必须使用 mysql_fetch_array 或 mysql_fetch_assoc 函数。

$retrieve_id = "SELECT userid FROM tb_users WHERE username = '$username'";
$result = mysql_query($retrieve_id));
$row = mysql_fetch_assoc($result)) {
echo $row['userid'];
于 2013-10-08T14:21:32.767 回答
0

检查mysql_query()上的 php 文档。它实际上返回一个资源,而不仅仅是您要查询的值。

但是您甚至不应该使用mysql_query()它,因为它在 PHP 5.5 中已被弃用,并且您不想在升级时重做代码,是吗?

相反,使用mysqli_query(),它将返回一个mysqli_result对象。然后从该对象中,您可以使用fetch_field()检索您要查找的值

于 2013-10-08T14:22:21.907 回答
0

A) mysql_* 已弃用 B) 确保您正在参数化您的输入 C) 试试这个:

$result = mysql_query($retrieve_id);

$user_id=$result["userid"];
于 2013-10-08T14:18:45.943 回答