使用Medoo PHP数据库框架并尝试进行连接
$users = $db->select(
'users',
[
'[>] tournaments_users' =>
[
'tournaments_users.user_id' => 'users.uid'
]
], [
'users.uid',
'users.name',
'users.modifier',
'users.handicap',
'tournaments_users.tournament_id'
], [
'tournaments_users.tournament_id' => 1
'ORDER' => 'users.username ASC'
]
);
foreach( $users as $u) {
echo $u['name'].'<br>';
}
选择结果为foreach()提供了一个无效参数。
删除tournaments_users。从列-和where-section获取的锦标赛_id'使查询工作,但不显示正确的数据。
为什么查询无效?
更改连接选择
'[>]tournaments_users' =>
[
'uid' => 'user_id'
]
解决了无效参数的问题
medoo库(medoo 0.9.6.2)目前不支持在连接子句中使用AND/OR连接逻辑表达式。您只能使用medoo给出的query($query)方法直接执行sql查询。对于您的示例,查询看起来像这样:
$data = $db->query("SELECT u.user_id, s.shirt_id FROM `cvs_users` u
LEFT JOIN `shirts` s
ON user_id = shirt_owner_id AND shirt_being_worn = 1
WHERE user_id = 1")->fetchAll();
注意在末尾调用fetchAll()来获取查询的数据。我遇到了同样的问题,在调试medoo.php代码时发现and/OR条件只在where子句中考虑。也许他们会在未来的更新中加入这个功能。