calory
の最初の値として入れたいのですがfruits
、できませんでした。誰か助けてくれますか?
$sql = 'INSERT INTO fruits VALUES('', ?, ?, ?)'
SELECT calory
FROM diet
WHERE fruit = ?
';
$this->db->query($sql, array($a, $b, $c, $d));
calory
の最初の値として入れたいのですがfruits
、できませんでした。誰か助けてくれますか?
$sql = 'INSERT INTO fruits VALUES('', ?, ?, ?)'
SELECT calory
FROM diet
WHERE fruit = ?
';
$this->db->query($sql, array($a, $b, $c, $d));
正しい構文は次のとおりです。
INSERT INTO "table1" ("column1", "column2", ...)
SELECT "column3", "column4", ...
FROM "table2"
あなたの場合、これは次のようになります。
INSERT INTO fruits (calory)
SELECT calory
FROM diet
WHERE fruit = ?
(「calory」がテーブル「fruits」の列の名前の場合)
値にプレースホルダーを使用する場合 (あなたの場合は疑問符)、->query() ではなく ->prepare() を使用する必要があります。また、SQL 構文は完全に間違っています。推測では、クエリは次のように読む必要があると思います...
$sql = "INSERT INTO fruits VALUES('', ?, ?, ?) WHERE fruit = ?"; // Create query string.
$sth = $this->db->prepare($sql); // Prepare the query.
$sth->bindValue(1,$a); // Bind question marks to values
$sth->bindValue(2,$b); // (I am assuming that a,b,c,d are in
$sth->bindValue(3,$c); // the correct order...
$sth->bindValue(4,$d);
$sth->execute(); // Execute the query to insert the data.
1つのクエリINSERT ... SELECT
を混同することはできません。INSERT ... VALUES
ステートメントで定数として他の値を選択するだけで、SELECT
問題はありません。
INSERT INTO fruits
SELECT calory, ?, ?, ?
FROM diet
WHERE fruit = ?
これ
INSERT INTO fruits SELECT calory, ?, ?, ? FROM diet WHERE fruit = ?
それをする必要があります...
選択クエリの答えを挿入クエリに入れる必要があるということです。これを試してください
$sql = 'INSERT INTO fruits VALUES('(SELECT calory
FROM diet
WHERE fruit = ?)', ?, ?, ?)'
';