2017-05-31 1 views
0

J'ai une instruction d'insertion mysqli assez complexe à faire, car j'ai besoin de rassembler des données provenant de deux autres tables et d'utiliser également certaines variables disponibles dans php en une seule instruction.Syntaxe de requête MySQLi avancée

Cela me perturbe à cause de l'ordre des variables pour les instructions préparées. - J'insère seulement quatre valeurs, mais pour obtenir les valeurs de t1 et t2, je me réfère à ces trois variables supplémentaires dans l'instruction bind_param.

Je devrais peuplant jobRoleID, COMPANYID, departmentId, competenceID avec 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(); 

Je reçois une erreur de syntaxe, mais je ne suis pas sûr à 100% Pourquoi. Quelqu'un peut-il aider?

Merci Dan

Répondre

0

Je n'ai pas résolu le problème de syntaxe avec cette requête, mais ont eu le temps en combinant simplement les instructions select pour récupérer toutes les informations dont j'ai besoin dans une seule instruction select ...

SELECT?,?, Departments.id AS departmentID, competences.id AS compétencesID FROM départements, compétences ... etc