Php SQL联接替换不需要的列
我创建了一个Php SQL联接替换不需要的列,php,mysql,sql,join,left-join,Php,Mysql,Sql,Join,Left Join,我创建了一个JOIN查询,以便能够从users表中访问username列,其中t.user\u id=u.id 不幸的是,创建此查询后出现了一个问题。现在,当我尝试使用触发器表中的id时,我的变量正在从users表中拾取id 有人知道我怎么解决这个问题吗 try { $con = getConfig('pdo'); $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $sql_triggers
JOIN
查询,以便能够从users
表中访问username
列,其中t.user\u 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
用户=u
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
我能够修改SQL以获得我想要的结果。用户
id
列与触发器id
列冲突。正如奈杰伦指出的,将u.id,
更改为u.id作为uid,
解决了这个问题
SELECT
t.*,
u.id AS uid,
u.username
FROM
triggers AS t
LEFT JOIN
users AS u ON t.user_id = u.id
";
保罗?我发表了一条评论,我想你已经回复我了。因为两个表都有相同的字段名,所以你需要区分它们。您可以在sql语句中使用u.id作为UID,然后在后续操作中引用UID。@FunkFortyner我没有看到您的评论,抱歉。我删除了它,因为有人关闭了它。@jeff我会在这里这样做吗<代码>t.*,u.id,@Paul请发布您的答案/解决方案。奈杰尔重新开门。