Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/248.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php 一页多个MySQL查询(WordPress)_Php_Mysql_Wordpress - Fatal编程技术网

Php 一页多个MySQL查询(WordPress)

Php 一页多个MySQL查询(WordPress),php,mysql,wordpress,Php,Mysql,Wordpress,我目前正在WordPress网站上运行以下查询: PHP: 第页: <?php echo get_details('facebook_url', $post_id); ?> 这是一个新的自定义表,其工作方式与WP posts meta相同 这在页面上运行了20多次,所以我想知道是否有更好的方法来实现这一点 当前在数据库中直接运行查询需要0.5128秒,数据库表的大小为36MB 这个查询真的让网站慢了下来。感谢shadow陈述了显而易见的事实,但它起了作用: public fun

我目前正在WordPress网站上运行以下查询:

PHP:

第页:

<?php echo get_details('facebook_url', $post_id); ?>

这是一个新的自定义表,其工作方式与WP posts meta相同

这在页面上运行了20多次,所以我想知道是否有更好的方法来实现这一点

当前在数据库中直接运行查询需要0.5128秒,数据库表的大小为36MB


这个查询真的让网站慢了下来。

感谢shadow陈述了显而易见的事实,但它起了作用:

public function get_meta_data() {
    $meta_keys = array(
//META KEYS GO HERE IN ARRAY
    );
    $mks = implode("', '", $meta_keys);

    //Get Results
    global $wpdb;
    $results = $wpdb->get_results( "SELECT meta_key, meta_value FROM {$wpdb->prefix}resorts_meta WHERE meta_key IN ('{$mks}') AND post_id = '{$this->id}'", OBJECT_K );

    foreach($results as $key => $value) {
      $this->$key = $value->meta_value;
    }

    return "SELECT meta_key, meta_value FROM {$wpdb->prefix}new_post_meta WHERE meta_key IN ('{$mks}') AND post_id = '{$this->id}'";
然后,我创建了一个函数,以$this->变量的形式显示结果,如下所示:

公共函数get\u meta($key){
返回$this->$key;
}

然后将get_元数据存储在构造函数中


谢谢Shadow。

将post ID作为数组传递,并在sql中使用in()。抱歉,Shadow,它们都使用相同的ID,所以通过多次查询,我的意思是:
等。然后将键作为数组传递,并使用in()。啊,好的,是的,我如何将其作为类使用,例如
函数get\u details(){//stuff here函数get_facebook_url(){$this->get_details('facebook_url');}
HTML``设法让它工作起来,谢谢你这么简单,我甚至没有想过要尝试它!
public function get_meta_data() {
    $meta_keys = array(
//META KEYS GO HERE IN ARRAY
    );
    $mks = implode("', '", $meta_keys);

    //Get Results
    global $wpdb;
    $results = $wpdb->get_results( "SELECT meta_key, meta_value FROM {$wpdb->prefix}resorts_meta WHERE meta_key IN ('{$mks}') AND post_id = '{$this->id}'", OBJECT_K );

    foreach($results as $key => $value) {
      $this->$key = $value->meta_value;
    }

    return "SELECT meta_key, meta_value FROM {$wpdb->prefix}new_post_meta WHERE meta_key IN ('{$mks}') AND post_id = '{$this->id}'";