【问题标题】:sql query to retrieve data from 2 tables using join使用连接从 2 个表中检索数据的 sql 查询
【发布时间】:2017-02-13 20:42:24
【问题描述】:

使用 sql 查询使用连接从 2 个表中检索数据不起作用,因为我希望这是使用过的查询:

$result2 = $wpdb->get_results('select site_info.siteID, owner_info.ownerNAME, 
                            site_info.siteNAME,  site_info.equipmentTYPE 
                            from `site_info`
                                INNER JOIN `owner_info` on site_info.ownerID = owner_info.ownerID
                            where owner_info.ownerID = 159');
foreach($result2 as $result) {
    echo join(', ',  $result), '<br/>';
    echo "<br/>";
}

我从 2 个表中检索数据,但结果是:

Warning: join(): Invalid arguments passed in /opt/lampp/htdocs/wordpress/wp-content/themes/wp-portfolio/search-info.php on line 43

如果有人能告诉我我做错了什么。

【问题讨论】:

  • 您可以尝试在 MySQL 控制台中执行查询,看看是否返回任何结果?
  • 是的,我已经尝试过了,它会返回所需的结果...问题出在 join() 函数中,但我不知道是什么问题

标签: mysql database join error-handling inner-join


【解决方案1】:

join() 是 implode() 的 php 函数别名

http://php.net/manual/en/function.implode.php

传递给 join() 的第二个参数不是数组,但 join 方法需要一个数组作为第二个参数,这会导致问题

$result 是一个具有这种形式的对象: 标准类对象([siteID] => BAH004 [siteNAME] =>XXXXXXX [equipmentTYPE] => XXXXXXX)

也许可以试试这样的:

foreach($result2 as $result) {
    echo join(', ',  array($result->siteID, $result->ownerNAME, $result->siteNAME, $result->equipmentTYPE)), '<br/>';
    echo "<br/>";
}

你也可以试试这个可能更简单:

foreach($result2 as $result) {
    $result = (array)$result; // convert the object to an array
    echo join(', ',  $result), '<br/>';
    echo "<br/>";
}

【讨论】:

  • 感谢您的帮助,让我明白您所说的 join() 函数不需要数组吗?
  • 我的意思是你的第二个参数不是一个简单的数组,但不仅如此,你的第二个参数是一个对象而不是一个数组。我编辑我的答案以更好地理解
  • 第二种解决方案更符合您的需求
猜你喜欢
  • 2013-04-05
  • 2020-12-15
  • 1970-01-01
  • 2020-09-16
  • 2011-03-10
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多