【发布时间】:2019-12-06 18:40:29
【问题描述】:
我创建了一个JOIN 查询,以便能够从users 表中访问username 列,其中t.user_id = u.id。
很遗憾,创建此查询后出现了问题。现在,当我尝试使用触发器表中的id 时,我的变量正在从users 表中获取id。
有人知道我该如何解决这个问题吗?
try {
$con = getConfig('pdo');
$con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$sql_triggers = "
SELECT
t.*,
u.id,
u.username
FROM
triggers AS t
LEFT JOIN
users AS u ON t.user_id = u.id
";
$triggers_stmt = $con->prepare($sql_triggers);
$triggers_stmt->execute();
$triggers_rows = $triggers_stmt->fetchAll(PDO::FETCH_ASSOC);
$triggers_arr = array();
foreach ($triggers_rows as $triggers_row) {
$trigger_id = $triggers_row['id'];
$trigger_title = $triggers_row['trigger_name'];
$trigger_description = $triggers_row['description'];
$trigger_setting = $triggers_row['setting'];
$trigger_user = $triggers_row['user_id'];
$trigger_username = $triggers_row['username'];
触发器 = t
CREATE TABLE `triggers` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`trigger_name` varchar(70) COLLATE utf8_unicode_ci NOT NULL,
`setting` varchar(20) COLLATE utf8_unicode_ci NOT NULL,
`description` text COLLATE utf8_unicode_ci NOT NULL,
`user_id` int(11) NOT NULL,
`placement` varchar(10) COLLATE utf8_unicode_ci NOT NULL,
`date_changed` datetime NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=3 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_ci
用户 = 你
CREATE TABLE `users` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`firstname` varchar(55) COLLATE utf8_unicode_ci NOT NULL,
`lastname` varchar(55) COLLATE utf8_unicode_ci NOT NULL,
`email` varchar(55) COLLATE utf8_unicode_ci NOT NULL,
`username` varchar(70) COLLATE utf8_unicode_ci NOT NULL,
`password` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`salt` varchar(100) COLLATE utf8_unicode_ci NOT NULL,
`joined` datetime NOT NULL,
`last_login` datetime NOT NULL,
`group` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM AUTO_INCREMENT=24 DEFAULT CHARSET=utf8 COLLATE=utf8_unicode_c
【问题讨论】:
-
Why did you delete your other question保罗?我发表了评论,并认为你会回复我。
-
由于两个表具有相同的字段名称,因此您需要区分它们。您可以在 sql 语句中使用 u.id 作为 UID,然后在后续操作中引用 UID。
-
@FunkFortyNiner 我没有看到你的评论,抱歉。我删除它是因为有人关闭了它。
-
@jeff 我会在这里做吗?
t.*, u.id, -
@Paul 请发布您的答案/解决方案。奈杰尔重新打开。
标签: php mysql sql join left-join