【问题标题】:Mysql not insert recordsMysql不插入记录
【发布时间】:2012-07-12 01:51:43
【问题描述】:

我有两张桌子:employeeemployee_group。插入第一个表后,我将从该表中获取最后插入的 id。接下来我需要插入表employee_group。 SQL:

INSERT INTO employee_group (employee_id, group_id) 
  SELECT {$currentEmpId}, group_id 
  FROM employee_group 
  WHERE employee_id = {$anyId}

MySQL 已返回 TRUE。但是没有插入记录。

我注意到如果尝试为之前插入的员工插入记录,那么查询将成功。示例:

  1. 插入员工,将返回 $currentEmpId 作为最后插入的 ID
  2. INSERT INTO employee_group (employee_id, group_id) SELECT {$currentEmpId - 1}, group_id FROM employee_group WHERE employee_id = {$anyEmpId}

或者,如果我尝试同时为当前员工和上一个员工插入记录,那么第一次查询将不成功,但第二次查询正常。

数据库没有触发器、外键或函数。没什么,只是数据。

我陷入了僵局。

UPD:如果我将记录保存到 php 变量中,然后对其进行 foreach 并将每条记录插入为一个项目,例如 INSERT INTO employee_group (employee_id, group_id) VALUES (xxx, yyy) 我也会遇到这个问题。

【问题讨论】:

  • {$currentEmpId - 1} 会导致 PHP 语法错误,而 definitley 会导致 sql 语法错误。
  • 我很抱歉那个代码,确实有 sprintf(".. SELECT %u ..", $currentEmpId - 1) 但我已经替换它以便更好地理解。
  • 你成功的插入使用{$anyEmpId},但失败的插入使用{$anyId}。哪个是正确的变量?
  • {$anyEmpId} 和 {$anyId} 都是正确的。对于测试,我采用了另一个变量名称,而不是“生产”查询。问题不是空的或不正确的输入变量,一切正常。使用employee_id = <last inserted id of employee> 插入employee_group 记录的问题。如果我尝试分配给 employee_id 不是最后插入的 id 而是以前或将来的 id,我会成功的。

标签: php mysql


【解决方案1】:
INSERT INTO employee_group (employee_id, group_id) 
  VALUES({$toEmpId},{SELECT group_id FROM employee_group WHERE employee_id = {$fromEmpId}})

看看..

【讨论】:

  • 我不确定什么 mysql 允许通过这种方式从其他表中插入许多记录。我试过你的 sql 但有语法错误。
【解决方案2】:

试试这个

INSERT INTO employee_group (employee_id, group_id) 
  VALUES({$toEmpId},{SELECT {$toEmpId}, group_id FROM employee_group WHERE employee_id = {$fromEmpId}})

【讨论】:

  • 您尝试在此处将 3 个值插入 2 列。
  • 那是soOoOooooooo 不起作用.... 3 个值放入 2 个字段中,我不知道您希望 select 如何在那里工作,加上那些额外的 {} 是一种语法错误等等……等等……等等……
猜你喜欢
  • 2017-11-16
  • 1970-01-01
  • 1970-01-01
  • 2013-12-31
  • 2012-01-02
  • 2012-04-17
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多