【问题标题】:mysql_fetch_array returns 0 from a simple tablemysql_fetch_array 从一个简单的表中返回 0
【发布时间】:2014-11-12 16:54:41
【问题描述】:

我有一个名为 setting 的表。

我想获得 key 等于 regCharg 的值:

    $result_gift = mysql_query("select value,key from setting WHERE key='regCharg'");
    $result_gift_row = mysql_fetch_array($result_gift);
    $finance = (float)$result_gift_row[2] ;

但它返回 0 值而不是 1000 。

(我知道我必须使用mysqli或PDO而不是mysql)。

【问题讨论】:

  • 首先:注意数组上的虚线下划线,这可能是一个sql保留字。第二:mysql_query 需要第二个参数(连接参数)。
  • @ADASein 连接参数是可选的!
  • @ADASein: array 不是保留的,但“key”是保留的。

标签: php mysql sql pdo mysqli


【解决方案1】:

key 是保留字。您不能在查询中“裸”使用它:

$result_gift = mysql_query("select value,`key` from setting WHERE `key`='regCharg'");
                                         ^---^---

如果您的脚本中甚至有基本的错误处理,您就会对语法错误进行规范化:

   $result = mysql_query(...) or die(mysql_error());
                             ^^^^^^^^^^^^^^^^^^^^^^^

您收到 zero 是因为查询失败,返回布尔值 FALSE,然后您在 fetch 操作中使用了该布尔值 false,导致进一步失败。

从不在进行数据库查询时假设成功。始终假设失败,检查失败,并将成功视为惊喜。

【讨论】:

    【解决方案2】:

    您只从数据库中返回两个字段。使用数组时,索引从 0 开始。

    数组将按照您在 SQL 查询中使用的顺序进行排序。

    因此需要使用$result_gift_row[0] 来返回字段值。 result_gift_row[1] 将返回关键字段。

    【讨论】:

      【解决方案3】:

      试试这个:

      $finance = (float)$result_gift_row[1] ;
      

      数组从 0 开始索引,这就是为什么您应该在索引 1 处找到第二列

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2018-04-22
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        相关资源
        最近更新 更多