【问题标题】:Advanced MySQLi query syntax高级 MySQLi 查询语法
【发布时间】:2017-05-31 12:59:05
【问题描述】:

我有一个相当复杂的 mysqli insert 语句要做,因为我需要从另外两个表中收集数据,并且还需要在一个语句中使用 php 中可用的一些变量。

这让我很困惑,因为准备好的语句的变量顺序。 - 我只插入了四个值,但为了获取 t1 和 t2 的值,我也在 bind_param 语句中引用了这三个附加变量。

我应该使用 $newJobRoleID,$newCompanyID,t1.id,t2.id 填充 jobRoleID,companyID,departmentID,competenceID

$addJobCompetencies = $con->prepare("
INSERT INTO jobRoleCompetencies (jobRoleID,companyID,departmentID,competenceID)
WITH t1 AS (SELECT id FROM departments WHERE companyID = ? AND department = ?), 
     t2 AS (SELECT id FROM competencies WHERE companyID = ?)
     SELECT ?,?,t1.id,t2.id FROM t1,t2");

if($addJobCompetencies) {
    $addJobCompetencies->bind_param('isiii', $newCompanyID,$row['department'],$newCompanyID,$newJobRoleID,$newCompanyID);
    $addJobCompetencies->execute();
} else {
    echo $con->error;   
}
$addJobCompetencies->free_result();

我收到语法错误,但我不是 100% 确定原因。有人可以帮忙吗?

谢谢 丹

【问题讨论】:

    标签: mysqli prepared-statement


    【解决方案1】:

    我还没有解决这个查询的语法问题,但是通过简单地组合 select 语句以在单个 select 语句中检索我需要的所有信息来解决它...

    SELECT ?,?,departments.id AS departmentID,competencies.id AS能力ID FROM部门,能力...等

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2013-06-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-03-15
      • 2016-02-01
      相关资源
      最近更新 更多