MySQL查询返回资源ID#8,而不是所需值[关闭]

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了MySQL查询返回资源ID#8,而不是所需值[关闭]相关的知识,希望对你有一定的参考价值。

[嗨,我正在尝试发现如何修正查询以返回正确的结果。这是我的查询:

$selectShoeRatingQuery = "SELECT cast(round(AVG(rating)*2)/ 2 as decimal(10,1)) FROM rating WHERE shoe_id = '$_GET[id]'";
$shoeRating = mysql_query($selectShoeRatingQuery);

查询应返回一个小数点后一位数字(3.5)。在phpMyAdmin中测试时,它可以正常工作,但是在我的网站上,它返回resource id #8

数据库连接全部正常。

答案

mysql_query返回资源。您需要从中获得一行:

$query = mysql_query($selectShoeRatingQuery);
$row = mysql_fetch_row($query);
$shoeRating = $row[0];

而且,除非您别无选择-请勿使用mysql_套扩展名!他们已弃用,PDO等人。更好。而且您的查询容易受到攻击。

另一答案

Php Manual引用

对于SELECT,SHOW,DESCRIBE,EXPLAIN和其他返回结果集的语句,mysql_query()在成功时返回资源,在错误时返回FALSE。

您需要获取才能使用它

$row = MySQL_fetch_row($query);

如果现在不使用预备语句,则至少使用mysql_real_escape_string

mysql_real_escape_string

警告

您的代码容易受到 'mysql_real_escape_string($_GET[id])'" 的攻击,您需要转义所有sql injectionget,更好的方法是使用post

Good Read

  1. Prepared statement
  2. How to prevent SQL injection in PHP?

  1. 整个Are PDO prepared statements sufficient to prevent SQL injection? PHP扩展,提供了所有带有前缀mysql_的函数,为ext/mysql,以后将被删除。因此,请使用officially deprecated as of PHP v5.5.0PDO

读得好

  1. MySQLi
  2. The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead
  3. PDO Tutorial for MySQL Developers
另一答案

通过PHP调用时,选择查询返回Pdo Tutorial For Beginners,它实际上是指向结果第一行的指针。要获取数据,您将必须使用Resource,它将使您获得指针所指的行。

在读完该行之后,指针将自动递增以指向下一行。

因此,您的代码将是这样的

mysql_fetch_array

此外,请不要使用$connection = mysqli_connect(...); $query = ""; //put your query here $result = mysqli_query($connection, $query); while($row = mysqli_fetch_array($result, MYSQL_ASSOC)) { //$row will contain the data of the row in an array format. Use it here. } 函数,因为它们已被弃用。使用MySQLi或PDO。

另一答案

尝试,

mysql
另一答案
SELECT round(AVG(rating) * 2.0) / 2.0 AS result
FROM rating
WHERE ....
另一答案
$selectShoeRatingQuery = "SELECT cast(round(AVG(rating)*2)/ 2 as decimal(10,1)) as `num` FROM rating WHERE shoe_id = '$_GET[id]'";
$shoeRating = mysql_query($selectShoeRatingQuery);
$r = mysql_fetch_row($shoeRating);
echo $r['num'];// <--- alias

以上是关于MySQL查询返回资源ID#8,而不是所需值[关闭]的主要内容,如果未能解决你的问题,请参考以下文章

至少一个表包含所需值时的 SQL JOIN:这可以在单个查询中实现吗?

mysql 8 pivot 查询应该返回一个非空值

获取具有任何所需值的组

如何从 BLE 制造商数据抖动中获取所需值

使用之前和之后的值来分析所需值::: 辐射校准 - 条纹

选择的MySQL查询问题[关闭]