【问题标题】:How to get variables from MySQL Query (multiple level array)?如何从 MySQL 查询(多级数组)中获取变量?
【发布时间】:2011-10-05 07:57:37
【问题描述】:

我有以下几点:

$sql = "SELECT c.category_name
         , c.category_name_url 
    FROM blog_categories AS c 
      JOIN blog_articles AS a
        ON a.category_name = c.category_name
    WHERE c.category_status = 'online'
    GROUP BY c.category_name
    ";

$result = mysql_query($query) or die(mysql_error());

while($row = mysql_fetch_array($result)) {

$category_name = $row['c']['category_name'];
$category_name_url = $row['c']['category_name_url'];

}

但它不起作用(生成空白)。我确定我做错了什么,但我不知道我正在寻找的正式术语是什么,所以谷歌没有帮助 =/。

【问题讨论】:

标签: php mysql arrays variables


【解决方案1】:

代码没有运行,因为你为 mysql_fetch_array 提供了一个有效的资源。 $row 也是一维数组。

$sql = mysql_query("SELECT c.category_name
     , c.category_name_url 
FROM blog_categories AS c 
  JOIN blog_articles AS a
    ON a.category_name = c.category_name
WHERE c.category_status = 'online'
GROUP BY c.category_name
");

 while($row = mysql_fetch_array($sql)) {

 $category_name = $row['category_name'];
 $category_name_url = $row['category_name_url'];

 }

【讨论】:

    【解决方案2】:
    $category_name = $row['category_name'];
    

    好吧,我投票给 PDO,但我很确定你可以跳过“c”,因为 $row 将引用字段名。 c 只是由 DBMS 评估以将该字段与属性表相关联。

    【讨论】:

    • 也可以使用mysql_fetch_array() 来使用索引。例如:$row[0] 用于 category_name,$row[1] 用于 category_name_url 等。
    【解决方案3】:

    您应该在 $sql(sql 查询)上调用 mysql_query,然后再调用 mysql_fetch_array 以获取调用结果。无论如何,您几乎应该总是调用 mysql_error 来检查错误。

    【讨论】:

    • 啊,实际上我是这样做的(我只是没有在其中添加那行)-为澄清而编辑:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2018-06-08
    • 1970-01-01
    • 2015-08-04
    • 2011-04-03
    • 2014-09-25
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多