Я создал 3 таблицы, и мне нужны данные из 3
T1
- idt1 - ПЕРВИЧНЫЙ КЛЮЧ
- n1t1
- n2t1
T2
- idt2 - ПЕРВИЧНЫЙ КЛЮЧ
- n1t2
- n2t2
T3
- idt3
- idt1 - ИНОСТРАННЫЙ КЛЮЧ
- idt2 - ИНОСТРАННЫЙ КЛЮЧ
- n1t3
- n2t3
- n3t3
- n4t3
Я ищу эту информацию: n1t1, n2t1, n1t2, n1t3, n2t3
Код:
$stmt = $db->prepare("SELECT t1.n1t1 AS t1_n1t1, t1.n2t1 AS t1_n2t1, t2.n1t2 AS t2_n1t2, t3.n1t3 AS t3_n1t3, t3.n2t3 AS t3_n2t3
FROM t1
INNER JOIN t3 ON t1.idt1 = t3.idt1
INNER JOIN T2 ON T3.idt2 = T2.idt2
");
if ($result = $stmt->execute()) {
$arr = $result->fetchArray();
foreach ($arr as &$row) {
echo "1 : " . $row["t1_n1t1"] . "<br>";
echo "2 : " . $row["t1_n2t1"] . "<br>";
echo "3 : " . $row["t2_n1t2"] . "<br>";
echo "4 : " . $row["t3_n1t3"] . "<br>";
echo "5 : " . $row["t3_n2t3"] . "<br>";
}
}
Ошибки: у меня есть значения Отображается (1: 2), он меняется, и выше ошибка Warning: Illegal string offset
на некоторых именах, таких как n1T1 и т. Д.
Я вижу, что мои idt1 и idt2 (FOREIGN KEY) на t3 имеют имя столбца: 0
Экран:
таблицы экранов
Я вставляю с примером .csv:
n1t3;n2t3;n3t3;n4t3
123;n2a;n3a;n4a
456;n2b;n3b;n4b
789;n2c;n3c;n4c
456;n2d;n3d;n4d
Код: Я добавляю свой FOREINGN KEY в
if (($file = fopen('exemple.csv', 'r')) === FALSE)
echo "SQLite 3 : error CSV";
$req = $db->exec("CREATE TABLE t3 (idt3 integer PRIMARY KEY AUTOINCREMENT, idt1 integer, idt2 integer, n1t3, n2t3, n3t3, n4t3 FOREIGN KEY(idT1) REFERENCES t1(idt1), FOREIGN KEY(idt2) REFERENCES t2(idt2))");
$req = $db->prepare("INSERT INTO t3 (idt1, idt2, n1t3, n2t3, n3t3, n4t3) VALUES (:idt1, :idt2, :n1t3, :n2t3, :n3t3, :n4t3)");
$idt1 = 0;
$idt2 = 0;
$req->bindValue(':idt1', $idt1++, SQLITE3_INTEGER);
$req->bindValue(':idt2', $idt2++, SQLITE3_INTEGER);
...
Я удалил первую строку, имя таблицы в t1 и t3 для тестирования с ней
fgetcsv($file);
Но всегда одна и та же ошибка или код ...
Новые таблицы экранов:
таблицы экранов v2