Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/267.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Php SQL联接替换不需要的列_Php_Mysql_Sql_Join_Left Join - Fatal编程技术网

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请发布您的答案/解决方案。奈杰尔重新开门。