我正在尝试从我的用户表中接收一个 Id。我有:
$retrieve_id = "SELECT userid FROM tb_users WHERE username = '$username'";
$user_id = intval(mysql_query($retrieve_id));
该语句应返回 1,因为这是表中的值。但是,它返回 6,这是列名 ( userid
) 的长度。当我查询其他表时也会发生这种情况。
如何仅从表中检索值?
您需要使用或从查询中获取实际结果。mysql_result
mysql_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 注入开放。
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'];
函数 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'];
检查mysql_query()上的 php 文档。它实际上返回一个资源,而不仅仅是您要查询的值。
但是您甚至不应该使用mysql_query()
它,因为它在 PHP 5.5 中已被弃用,并且您不想在升级时重做代码,是吗?
相反,使用mysqli_query(),它将返回一个mysqli_result对象。然后从该对象中,您可以使用fetch_field()检索您要查找的值
A) mysql_* 已弃用 B) 确保您正在参数化您的输入 C) 试试这个:
$result = mysql_query($retrieve_id);
$user_id=$result["userid"];