2017-05-31 40 views
0

我有一个相当复杂的mysqli插入语句来做,因为我需要从另外两个表中收集数据,并且还可以在一个语句中使用一些可用于php的变量。高级MySQLi查询语法

由于准备好的语句的变量顺序,我感到困惑。 - 我只插入四个值,但为了获得t1和t2的值,我还在bind_param语句中引用了这三个附加变量。

我应该填充jobRoleID,companyID,DepartmentID的,competenceID与$ newJobRoleID,$ newCompanyID,t1.id,t2.id

$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%确定为什么。谁能帮忙?

感谢 丹

回答

0

我还没有解决与此查询的语法问题,但都围绕它得到了通过简单组合的选择语句检索我需要在一个SELECT语句的所有信息...

SELECT?,?,departments.id AS departmentID,competencies.id AS competencyID FROM departments,competencies ... etc