【问题标题】:Why is my MySQL query giving a strange answer?为什么我的 MySQL 查询给出了一个奇怪的答案?
【发布时间】:2012-07-20 20:07:56
【问题描述】:

所以,我正在尝试实现一个动态的 htaccess 禁止系统,而这行代码给我带来了巨大的问题:

$ip = mysql_query("SELECT ID FROM wp_contactform WHERE Nimi='Christian'");

当我回显它时,它给了我以下信息:

Resource id #3

该表包含 Christian 3 次,id 分别为 11、13 和 10。这是什么原因造成的?

【问题讨论】:

  • 这个问题的根本原因是您没有阅读documentation
  • 这是正常行为。您应该将此资源用作mysql_fetch_array 的参数
  • 欢迎来到 Stack Overflow!请不要将mysql_* 函数用于新代码。它们不再维护,社区已经开始deprecation process。看到red box?相反,您应该了解prepared statements 并使用PDOMySQLi。如果您不能决定,this article 将帮助您选择。如果你想学习,here is good PDO tutorial
  • 抱歉,我只阅读了 w3schools 的教程。我会去给他们考虑的。
  • @ChristianNikkanen:欢迎来到 Stack Overflow! w3schools 是一个错误且具有误导性的网站。您不应将其用作任何语言的参考。对于 PHP,有 PHP Manual,对于 JavaScript,有 Mozilla Developer Network (or MDN)。请参阅w3fools.com 以进一步了解为什么您不应该使用 w3schools。

标签: php mysql sql database


【解决方案1】:
$ip = mysql_query("SELECT ID FROM wp_contactform WHERE Nimi='Christian'");

$ip 将简单地检索代表结果集的资源 - 它不是数据本身。

您需要考虑使用:

$ip_array = mysql_fetch_array($ip);
$ID = $ip_array['ID'];

获取ID

另外请记住,此 API (mysql_*) 已被弃用,因此在 PHP 中研究替代 MySQL 库可能符合您的最佳利益:

MySQLihttp://php.net/manual/en/book.mysqli.php

MySQL PDOhttp://php.net/manual/en/book.mysqli.php

【讨论】:

    【解决方案2】:

    明确写在manual

    对于 SELECT、SHOW、DESCRIBE、EXPLAIN 等语句返回 结果集,mysql_query() 成功返回资源,或 FALSE 错误。

    while ($row = mysql_fetch_assoc($ip))
    {
     echo $result[] = $row;
    }
    echo "<pre>";
    print_r($result);
    

    【讨论】:

      猜你喜欢
      • 2022-01-07
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多