MySql 语句返回不正确的结果


MySql statement returning incorrect results

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

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

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

如何仅从表中检索值?

您需要

使用 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_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((