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