【问题标题】:Retrieve Value From MySQL Table and Save in Variable从 MySQL 表中检索值并保存在变量中
【发布时间】:2012-05-19 00:05:59
【问题描述】:

我有一个表(wp_postmeta),其中包含四列(meta_id、post_id、meta_key、meta_value)。 meta_key 包含一个名为 neighbor_value 的字段,neighbor_value 的值存储在 meta_value 列下。如何从我的表中检索neighborhood_value 的内容并将它们用作变量?感谢任何支持

【问题讨论】:

    标签: php mysql sql wordpress


    【解决方案1】:

    好的,因为一切都是元,代码也将是“元”:)

    更新 - 现在,当我知道您使用什么连接到数据库时,我可以将答案更改为更具体。

    global $wpdb;
    
    $sql = "SELECT meta_key, meta_value FROM $wpdb->postmeta WHERE post_id=XXX";
    
    $retMeta = array();
    $results = $wpdb->get_results($sql);
    
    foreach ($results as $resultRow)
    {
        if (!isset($retMeta[$resultRow['meta_key']]))
        {
            $retMeta[$resultRow['meta_key']] = array();
        }
        $retMeta[$resultRow['meta_key']][] = $resultRow['meta_value'];
    }
    

    生成的 $retMeta 将是二维数组,然后您将能够使用 $retMeta['neighbourhood_value'][0] 访问您的邻域值(当然首先您必须检查它是否已设置 - @ 987654322@).

    更新2

    对于导入数据的脚本,它看起来像这样:

    $sql = "SELECT meta_key, meta_value FROM wp_postmeta WHERE post_id=XXX";
    
    $retMeta = array();
    $result = mysql_query($sql);
    
    while ($resultRow= mysql_fetch_assoc($result))
    {
        if (!isset($retMeta[$resultRow['meta_key']]))
        {
            $retMeta[$resultRow['meta_key']] = array();
        }
        $retMeta[$resultRow['meta_key']][] = $resultRow['meta_value'];
    }
    mysql_free_result($result);
    

    但是无论如何你都应该使用 WP_Query,以保持可移植性(wp_postmeta 不必这样命名,它可以是 wp2_postmeta 等)。

    【讨论】:

    • 这给了我:PHP 致命错误:调用 /var/www/clients/client4/web4/web/wp-content/plugins/import-rets/RETS_helper.php 中的未定义函数 FETCH_QUERY_RESULT_ROW()在第 727 行
    • 嗯,当然。正如我所说,这是“元”答案,我真的不知道,您使用什么来获取 SQL 结果(mysql_query、WP_Query、PDO ...)。好吧,现在我知道了
    • 是的,当然……不,伙计。它是 WP_Query,因为您正在编写 WordPress 插件。数据库服务器可能是 MySQL,但用于获取数据的函数(或者更确切地说 - object_ 是 WP_Query。对不起,我错过了你问题上的 wordpress 标签,我更正了我的答案。
    • 不。我只是碰巧在插件文件夹中有它。该脚本只是将列表导入 WordPress 数据库,但它使用 MySQL_Query
    【解决方案2】:

    如果我理解正确,您想从 meta_value 中键入一个键列表吗?

    我会在 php 中执行此操作:(假设您正在使用某种支持此构造的框架。此示例适用于 codeigniter 框架)

    $sql = "SELECT distinct meta_value FROM wp_postmeta"
    $result = $db->query($sql)
    foreach ($result->reult() as $row) {
      $mydata[] = $row->meta_value;
    }
    

    $mydata 现在是包含所有 meta_value 值的数组。

    【讨论】:

    • 我只想要与neighbor_value 的meta_key 成行的值。
    【解决方案3】:

    我正在做与以下相同的事情。

    <?php foreach($values as $value)
    {
        $myVarname[$value[valuefield]]=$value[valuefield];
    
    }
    
    $myVarname[field1]="Cow";
    $myVarname[field2]="dog";
    ?>
    

    【讨论】:

      【解决方案4】:

      如果您正在使用诸如 loop.php 等 Wordpress 模板文件,只需使用方便的 get_post_meta() 函数。

      【讨论】:

      • 我会,但是我需要在导入每个项目时将它们处理成自定义分类。
      • 嗯,无论如何你都应该考虑一下。只是使用 get_post_meta(POSTID, 'neighbourhood_value') 而不是你/我的 SQL,然后根据需要处理元值。
      • 如果我不在循环中怎么办。 get_post_meta() 还能用吗?
      • 它有 post ID 作为第一个参数,所以它独立于循环魔法。不过,您必须在运行时初始化 wordpress(嗯,这很明显,因为它是一个 wopres 函数)。
      【解决方案5】:

      您没有指定要对变量使用什么语言 - 但如果它恰好是 MySQL 中的 SQL,那么您可以使用以下方法“从 MySQL 表中检索值并保存在变量中”:

      select @var_name := column_name from table_name where other_column = 5;
      

      这会执行选择,并作为副作用将用户变量 @var_name 的值分配给 column_name 的值。

      select @var_name := count(*) from other_table where other_column > 5;
      

      将@var_name 设置为匹配条件的记录数。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 2016-05-19
        • 1970-01-01
        • 1970-01-01
        • 2012-04-27
        • 1970-01-01
        • 2012-07-29
        • 1970-01-01
        • 2013-03-13
        相关资源
        最近更新 更多