【问题标题】:SQLSTATE[42000]: Syntax error or access violation: 1066SQLSTATE [42000]:语法错误或访问冲突:1066
【发布时间】:2015-01-30 12:23:53
【问题描述】:

我正在使用 Xampp 服务器在 PHP Phalcon 中工作。

我有一系列模型:

UsersAbstract 是 UserOfficials、UserPatients 的父级。

UsersOfficial 是 OfficialDoctor 的父级。

数据库中的表与上面的模型名称相同,只是名称为驼峰式,如User_Officials等。只是 UsersAbstract 的表没有以驼峰式命名。原因是在这个项目开发的早期,我遇到了一个错误,通过将名称更改为 UsersAbstract 而不是 Users_Abstract 解决了这个错误。

无论如何,现在我正在尝试运行代码,导致 sn-p 的错误在这里:

foreach ($available_users as $user)
{
  $select_doctor = "Select "
         ."UserOfficials.Occupation,"
         ."UsersAbstract.Full_Name,"
         ."UserOfficials.Doc_ID "
         ."from UserOfficials join UsersAbstract "
         ."On UserOfficials.Unique_ID = UsersAbstract.Unique_ID"
         ." Where UserOfficials.Unique_ID = :uid:";

  $doctor_details = $this->modelsManager->executeQuery($select_doctor, array("uid" => $user->Unique_ID));

   if ($doctor_details->occupation == "Doctor")
        $this->available_doctor = $doctor_details;
}

我正在尝试将医生从可用用户列表中分离出来。我收到的错误是这样的

SQLSTATE[42000]: Syntax error or access violation: 1066 Not unique table/alias: 'usersabstract'

UserOfficials 和 UsersAbstract 表都有一个名为 Unique_ID 的列,用于将它们相互链接。

编辑:我添加了加入条件

[已解决]

UsersAbstract 类有一个函数“getSource()”。该函数在子孙类中没有重载。这就是在我的代码中观察到错误的原因。当我唯一设置每个模型类的来源时,问题就解决了。

【问题讨论】:

  • 没有加入条件。join syntax
  • 顺便说一句,thisIsCamelCasethis_is_snake_case 和我 don'tKnow_whyYou_would_mixThem_in_theSame_databaseSchema
  • 好吧,我当时就糊涂了

标签: php mysql phalcon


【解决方案1】:

试试这个查询。

$select_doctor = "Select "
     ."UserOfficials.Occupation,"
     ."UsersAbstract.Full_Name,"
     ."UserOfficials.Doc_ID "
     ."from UserOfficials join UsersAbstract "
     ."ON (UserOfficials.Unique_ID = UsersAbstract.Unique_ID)"
     ."WHERE UserOfficials.Unique_ID = :uid: AND UsersAbstract.Unique_ID = :uid:";

【讨论】:

  • 你的表名是UsersAbstract,那为什么显示Not unique table/alias: 'usersabstract'
  • DB 不区分大小写。当我在 XAMPP 中制作表格时,我将它们全部命名为这样,但它们会自动转换为小写。
  • 但这并不重要,其他控制器中的其他语句都在工作
  • 我改了拼写,好像转移了当前的问题
猜你喜欢
  • 2015-09-12
  • 2015-10-12
  • 2023-04-01
  • 2018-05-31
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-12-24
相关资源
最近更新 更多