2014-12-09 3 views
0

У меня есть эта строка sql, которая дает мне синтаксическую ошибку после закрывающей скобки выражения select. Я был убежден, что могу написать код таким образом. Есть ли альтернатива?SQL синтаксическая ошибка - инструкция SELECT в INSERT

Переменные внутри оператора select получены из GET, а другие - из POST. Любая помощь приветствуется.

$sql2="INSERT INTO playerRegSeason 
     (playerID, year, teamID, gp, minutes, pts, oreb, dreb, reb, 
     asts, stl, blk, turnover, pf, fga, fgm, fta, ftm, tpa, tpm) 
VALUES ((
     SELECT playerID FROM players WHERE firstname='$firstname' 
     AND lastname='$lastname' AND firstseason=$firstseason), $year, 
     '$team', $gp, $minutes, $pts, $oreb, $dreb, $reb, $asts, $stl, 
     $blk, $turnover, $pf, $fga, $fgm, $fta, $ftm, $tpa, $tpm)"; 

ответ

2

Не используйте VALUES, когда вы вставляете их из списка.

INSERT INTO abc (foo, bar) 
SELECT x, y FROM z 
0

Используйте это.

$sql2="INSERT INTO playerRegSeason 
     (playerID, year, teamID, gp, minutes, pts, oreb, dreb, reb, 
     asts, stl, blk, turnover, pf, fga, fgm, fta, ftm, tpa, tpm) 

     SELECT playerID, $year, '$team', $gp, $minutes, $pts, $oreb, 
     $dreb, $reb, $asts, $stl, $blk, $turnover, $pf, $fga, $fgm, 
     $fta, $ftm, $tpa, $tpm FROM players WHERE firstname='$firstname' 
     AND lastname='$lastname' AND firstseason=$firstseason"; 
+0

Я получаю эту ошибку: Ошибка: У вас возникла ошибка в синтаксисе SQL; проверьте руководство, соответствующее версии вашего сервера MySQL, для правильного синтаксиса, используемого рядом с 'SELECT playerID FROM players WHERE firstname =' 'AND lastname =' 'AND firstseason =' в строке 2 – user2884621

+0

@ user2884641: проверьте образец в sql fiddler http : //sqlfiddle.com/#! 2/f4ef5d/1 и http://sqlfiddle.com/#!2/ab89e/1 –

0
insert into table1 (field1, field2, ...) 
select col1, col2, ... 
from table2 
where .... 
0

SQL-оператор Вы написали неправильно, вы должны удалить пункт значения или вы можете обратиться Insert with select чтобы узнать, как написать вставку с отборным заявлением

0

использовать этот запрос вместо что один он работает

$ SQL2 = "INSERT INTO playerRegSeason (playerID, год, TeamID, Г.П. , минуты, PTS, Oreb, dreb, реб, НРХ, СТЛ, BLK, оборот, пФ, FGA, FgM, FTA , ftm, tpa, tpm)

values(SELECT playerID,year, $team, $gp, $minutes, $pts, $oreb, $dreb, 
    $reb, $asts, $stl, $blk, $turnover, $pf, $fga, $fgm, $fta, $ftm, $tpa, $tpm 
    WHERE firstname='$firstname' 
    AND lastname='$lastname' AND firstseason='$firstseason')"; 
Смежные вопросы