【问题标题】:Not unique table/alias: 'user' phpmyadmin XAMPP不是唯一的表/别名:'user' phpmyadmin XAMPP
【发布时间】:2014-02-18 13:27:50
【问题描述】:

我正在尝试将我的用户从数据库连接到浏览器,运行 XAMPP。我从我使用 users_index.php 文件中的以下代码创建的列表中选择一个用户用户:

<div class="list-group">
<?foreach ($users as $user ):?>

    <a href="<?=BASE_URL?>users/view/<?=$user['username']?>" class="list-group-item"><?=$user['username']?></a>

<? endforeach?>

这适用于访问数据库并获取我的用户名,直到我运行包含 div 的 users_view.php 文件:

<div>
    <span class="badge badge-success">By <?=$post["username"]?></span>
    <div class="pull-right">
        <?if(!empty($users)) foreach ($users [$post ['post_id']] as $user):?>
    <a href="#"><span class = "label" style="background-color: #5bc0de"><?=$user?></span></a>
    <?endforeach?>
</div>

之后,我从列表中选择用户名,它会收到以下错误消息:

不是唯一的表/别名:'user' 在文件 C:\xampp\htdocs\blog\controllers\users.php,第 28 行,函数 view()

当我进入那条线时,这就是我所拥有的:

28: $user_id = get_one("SELECT user_id FROM user NATURAL JOIN user WHERE username='$username'");

我有一个运行 MySql 的数据库,我使用 PMA 通过浏览器访问它。在数据库中,我创建了包含“user_id”、“用户名”、“密码”和“已删除”列的“用户”表。

我的目标是:在我从列表中选择一个用户后,它应该显示该用户发布的帖子。

有什么想法吗?

【问题讨论】:

  • 对于初学者来说,$post 和 ['post_id'] 之间不能有空格。

标签: php mysql xampp


【解决方案1】:

在您的查询中,您只要求一个表,因此此处的连接无关紧要 - 这就是出现别名错误的原因 - 数据库引擎需要第二个表。

对于连接,您需要确保告诉 mysql 表之间的关系

例如:

SELECT user_id FROM user NATURAL JOIN user ON sometable.username = user.username WHERE user.username='$username'

所以在这种情况下,相关表是“sometable”。否则,您只需执行单个表查询:

SELECT user_id FROM user WHERE username='$username' 

对于您的要求,您需要两张表格,一张用于您的用户信息,另一张用于您的“用户发布的帖子”。

“用户发表的帖子”表可能有一个 post_id(唯一)和一个 user_id。

【讨论】:

  • 我尝试使用 $user_id = get_one("SELECT user_id FROM user WHERE username='$username'");和 $this->post = get_one("SELECT * FROM user WHERE username='$username'");两者都让我靠近了一点。现在我从表中获取用户名。我还有一个“post”表,其中包含不同的列,如“post_created”、“post_id”、“post_subject”、“post_text”和“user_id”。
  • 好的,所以您将首先选择用户来填充列表并存储在变量中:SELECT username, user_id FROM user WHERE (whatever condition) 然后执行连接以列出第二个查询中的帖子:SELECT post_id, post_subject FROM post NATURAL JOIN user ON post.userid = user.userid WHERE post.userid='$userid' 更简单地说 -首先从所选用户那里获取用户 ID,然后找出他们发布的帖子。
  • 我明白你的意思。它在我创建的另一个“标签”表中工作,但我在尝试通过 post.user_id 连接到帖子时仍然收到错误Check the manual that corresponds to your MySQL server version for the right syntax to use near 'ON post.user_id = user.user_id WHERE ''=post.user_id'
  • 啊,我想我的 WHERE 语句令人费解。已编辑。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2016-04-24
  • 2019-04-28
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-12-16
相关资源
最近更新 更多