Je rencontre des problèmes lors de l'insertion de données dans le tableau MySql
. Pour simplifier, ma base de données a 2 tables, foo & foo2.Citations imbriquées lors de la saisie dans MySQL
Table foo2 a deux enregistrements
id=1, code="N", desc="Normal"
id=2, code="D", desc="Deviate"
Je veux remplir foo mais je dois foo2 référence à le faire. Mon code actuel est:
$inputarray = array(
array("ONE", "Proj 1", "N"),
array("TWO", "Proj 2", "D"));
for ($i = 0; $i < count($inputarray); $i++) {
$sql3 = $pdo->prepare("INSERT INTO foo (var1, var2, var3)
VALUES ('{$inputarray[$i][0]}'
,'{$inputarray[$i][1]}'
, (select id from foo2 where code='($inputarray[$i][3])')
)");
$sql3->execute();}`
Le "select id .." ligne génère un message d'erreur SQL mais si je coder en dur comme
(select id from foo2 where code='N')
alors le programme fonctionne sans erreur. J'ai essayé des caractères d'échappement, en utilisant des doubles guillemets dans les guillemets simples etc. Comment est-ce que je peux mieux contourner ce problème?
Le code pour créer foo était
$sql2 = $pdo->prepare('
CREATE TABLE foo(
id INT NOT NULL AUTO_INCREMENT,
var1 VARCHAR(3) NOT NULL UNIQUE,
var2 VARCHAR(32) NOT NULL,
var3 INT NOT NULL,
PRIMARY KEY (id),
FOREIGN KEY (var3) REFERENCES foo2 (id)
ON DELETE RESTRICT
ON UPDATE RESTRICT) ENGINE=INNODB');
Merci beaucoup pour la réponse @ e4c5 – Mahu11
Heureux d'avoir aidé – e4c5