我正在尝试从我的用户表中接收 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_
或 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'];
A( mysql_* 已弃用B( 确保对输入进行参数化C( 试试这个:
$result = mysql_query($retrieve_id);
$user_id=$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((