3

caloryの最初の値として入れたいのですがfruits、できませんでした。誰か助けてくれますか?

   $sql = 'INSERT INTO fruits VALUES('', ?, ?, ?)'
          SELECT calory
          FROM diet
          WHERE fruit = ?
         ';

   $this->db->query($sql, array($a, $b, $c, $d));
4

5 に答える 5

6

正しい構文は次のとおりです。

INSERT INTO "table1" ("column1", "column2", ...)
SELECT "column3", "column4", ...
FROM "table2"

あなたの場合、これは次のようになります。

INSERT INTO fruits (calory)
SELECT calory
FROM diet
WHERE fruit = ?

(「calory」がテーブル「fruits」の列の名前の場合)

于 2012-11-28T11:02:53.960 に答える
1

値にプレースホルダーを使用する場合 (あなたの場合は疑問符)、->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.
于 2012-11-28T11:03:59.087 に答える
0

1つのクエリINSERT ... SELECTを混同することはできません。INSERT ... VALUESステートメントで定数として他の値を選択するだけで、SELECT問題はありません。

INSERT INTO fruits
  SELECT calory, ?, ?, ?
  FROM diet
  WHERE fruit = ?
于 2012-11-28T10:58:28.213 に答える
0

これ

INSERT INTO fruits SELECT calory, ?, ?, ? FROM diet WHERE fruit = ?

それをする必要があります...

于 2012-11-28T10:58:35.017 に答える
0

選択クエリの答えを挿入クエリに入れる必要があるということです。これを試してください

$sql = 'INSERT INTO fruits VALUES('(SELECT calory
      FROM diet
      WHERE fruit = ?)', ?, ?, ?)'

     ';
于 2012-11-28T11:00:00.553 に答える