PHP查询未正确返回数据

PHP查询未正确返回数据,php,wordpress,Php,Wordpress,我有一个从多个表中提取值的查询。我想按显示日期ASC订购,但我似乎无法将其输出任何数据,有人看到我的语法有问题吗 $artists = $wpdb->get_results("SELECT * FROM " . GIGPRESS_ARTISTS . " AS a, " . GIGPRESS_SHOWS . " AS s, ORDER BY s.show_date "); var_dump($artists); foreach($artists as $artist_group) {

我有一个从多个表中提取值的查询。我想按显示日期ASC订购,但我似乎无法将其输出任何数据,有人看到我的语法有问题吗

$artists = $wpdb->get_results("SELECT * FROM " . GIGPRESS_ARTISTS . " AS a, " . GIGPRESS_SHOWS . " AS s, ORDER BY s.show_date ");

var_dump($artists);

foreach($artists as $artist_group) 
{
    $shows = $wpdb->get_results("SELECT * 
                                 FROM " . GIGPRESS_ARTISTS . " AS a, " . GIGPRESS_VENUES . " as v, " . GIGPRESS_SHOWS ." AS s 
                                 LEFT JOIN  " . GIGPRESS_TOURS . " AS t 
                                   ON s.show_tour_id = t.tour_id 
                                 WHERE " . $date_condition . " 
                                   AND show_status != 'deleted' AND s.show_artist_id = " . $artist_group->artist_id . " 
                                   AND s.show_artist_id = a.artist_id AND s.show_venue_id = v.venue_id " . $further_where . " 
                                 ORDER BY s.show_date " . $sort . ",s.show_expire " . $sort . ",s.show_time ". $sort . $limit);
}

转储返回

数组(72){[0]=>object(stdClass){[260(25){[“艺人id”]=>string(1)”1”[“艺人姓名”=>string(14)“Damien Dempsey”[“艺人订单”]=>string(1)“0”[“艺人id”]=>string(1)“艺人id”=>string(1)”1”[“艺人id”=>string(1)”1”[“演出场地id”=>string(1)”1)“1”[“演出巡回演出id”=>string(1)”1”=>string(1)“演出日期”[“演出日期”[]=>字符串(1)“0”[“show_time”]=>字符串(8)“20:30:00”[“show_expire”]=>字符串(10)“2012-01-29”[“show_price”]=>字符串(7)”.00“[“show_tix_url”]=>字符串(0)”[“show_tix_phone”]=>字符串(0)”“[“show_ages”=>字符串(8)”所有年龄”[“show_notes”]=>字符串(0)”[“show_-related”=>字符串(0)”删除状态[“show”=>[“show_tour_restore”]=>string(1)“0”[“show_address”]=>NULL[“show_locale”]=>NULL[“show_country”]=>NULL[“show_vention_url”]=>NULL[“show_vention_phone”]=>NULL}[1]=>object(stdClass)=>259(25)[“艺术家id”=>string(1)“2”[“艺术家姓名”]>string(10)“Gary Dunne order”[]1“[“表演艺术家id”]=>string(1)“1”[“表演场地id”]=>string(1)“1”[“表演巡演id”]=>string(1)”0“[“表演日期”]=>string(10)”2012-01-29“[“表演多人”=>string(1)”0”[“表演时间”=>string(8)“20:30:00”[“表演到期”=>string(10)”2012-01-29”[“表演价格”=>string(7)”tix”[]=>字符串(0)“[“显示年龄”]=>字符串(8)“所有年龄”[“显示笔记”]=>字符串(0)“[“显示相关”]=>字符串(1)”0”[“显示状态”]=>字符串(7)“删除”[“显示巡回演出还原”]=>字符串(1)“0”[“显示地址”]=>空[“显示地区”]=>空[“显示国家”]=>空[“显示地点”]=>空[“显示地点”]=>空[“显示地点”]=>空[“显示地点”]=>空[“显示地点”]2]=>object(stdClass)261(25){[“艺术家id”]=>string(1)“3”[“艺术家姓名”]=>string(19)“伦敦爱尔兰中心”[“艺术家订单”]=>string(1)“0”[“表演id”]=>string(1)”1”[“表演艺术家id”]=>string(1)“1”[“表演场地id”=>string(1)“1”1”[“表演巡回演出id”=>string(1)”0”[“表演日期”=>2012年10月29日”=>show_time“]=>string(8)“20:30:00”[“show_expire”]=>string(10)“2012-01-29”[“show_price”]=>string(7)”.10.00“[“show_tix_url”]=>string(0)”[“show_tix_phone”]=>string(0)”[“show_ages”=>string(8)“所有年龄”


我试过以下方法

foreach($artists as $artist_group) {
        $shows = $wpdb->get_results("SELECT * FROM " . GIGPRESS_ARTISTS . " AS a, " . GIGPRESS_VENUES . " as v, " . GIGPRESS_SHOWS ." AS s LEFT JOIN  " . GIGPRESS_TOURS . " AS t ON s.show_tour_id = t.tour_id WHERE " . $date_condition . " AND show_status != 'deleted' ORDER BY s.show_date ASC " . $limit);

它在排序方面起作用,但它输出每个值大约100倍或更愚蠢的东西。

s后面的逗号是无关的

从“.GIGPRESS\u艺术家”中选择*作为a,。GIGPRESS\u显示。 “作为s,按s.show_日期订购

此外,您似乎缺少WHERE子句或JOIN ON语句


此查询将生成与(所有Gig)x(所有频带)的交叉连接因此,在foreach中,您将为系统中的每个gig处理每个波段一次,而不是为每个波段/演出处理一次。

您肯定会得到一个结果,但是它返回一个对象数组,每个对象都是返回的行,而不是您可能期望的多维数组

要获取对象内的数据,您应该能够执行以下操作:

//initlialise array
$array = array();

//loop through array of objects
foreach($artists as $row){
    $temp_array = array();
    $temp_array['artist_id'] = $row->artist_id;
    $temp_array['artist_name'] = $row->artist_name;
    ....
    //add rest of object data to temporary array
    ....
    //assign data to main array
    $array[] = $temp_array;
}
然后,这将从对象中获取数据并创建多维数据数组。您可能希望在那里处理数据。这只是一个示例,因为我不知道您希望如何使用数据

另外,正如zerkms所说,如果您愿意,您可以使用
$array[4]->artist_name
访问数据,但我误解了您的问题。但是,如果您确实需要将其存储为多维数组,您可以使用上面的代码


如果尚未修复第一条SQL语句,则需要将连接条件添加到该语句中,否则将收到笛卡尔连接,该连接将为您提供重复的行,因为您没有提供连接条件。这将解决100x行相同的问题。之前的最后一条条件也不需要逗号e前面提到的顺序会导致SQL语法错误。

您的
var\u dump()是什么
返回?错误消息是什么?var\u也转储foreach循环。您确定连接成功吗?是的,如果我删除表连接并从Artisters表中提取所有内容,它工作正常,只是不按日期排序输出…@DanielWest我如何转储foreach抱歉?不知道如何处理这样的语法错误his
var\u dump
返回数据:-S@zerkms这是因为它创建了一个数组。然后你可以使用$array[4]['artist_name']来获得第五个条目的艺术家姓名…@Daniel West:它比
$array[4]->artist_name
更好吗?@zerkms不是,我更喜欢使用OO。我以为他在使用PHP对象时遇到了问题。