INSERT INTO..... ВЫБРАТЬ ИЗ
Я хочу поставить calory
как первое значение fruits
Я не мог этого сделать, кто-нибудь может помочь?
$sql = 'INSERT INTO fruits VALUES('', ?, ?, ?)'
SELECT calory
FROM diet
WHERE fruit = ?
';
$this->db->query($sql, array($a, $b, $c, $d));
5 ответов
Правильный синтаксис:
INSERT INTO "table1" ("column1", "column2", ...)
SELECT "column3", "column4", ...
FROM "table2"
в вашем случае это должно быть:
INSERT INTO fruits (calory)
SELECT calory
FROM diet
WHERE fruit = ?
(если "калория" - это название столбца в таблице "фрукты")
Когда вы используете заполнители для значений, (в вашем случае знаки вопроса) вам нужно использовать ->prepare(), а не ->query(). Также ваш синтаксис 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.
Это
INSERT INTO fruits SELECT calory, ?, ?, ? FROM diet WHERE fruit = ?
должен сделать это...
Вы не можете перепутать INSERT ... SELECT
а также INSERT ... VALUES
в одном запросе. Просто выберите другие значения в качестве констант в вашем SELECT
Скажите и у вас все будет хорошо
INSERT INTO fruits
SELECT calory, ?, ?, ?
FROM diet
WHERE fruit = ?
Вы имеете в виду, что вам нужно поместить ответ на выбранный запрос в запрос вставки, пожалуйста, попробуйте это
$sql = 'INSERT INTO fruits VALUES('(SELECT calory
FROM diet
WHERE fruit = ?)', ?, ?, ?)'
';