- ベストアンサー
式の書き方を教えていただけないでしょうか?
- $sql_tの式でデータが入らない問題が発生しています。
- SELECTの中のテーブル名を具体的に入れるとデータが入るが、変数で書くと入らなくなる理由を教えてください。
- 式の書き方を教えてください。
- みんなの回答 (2)
- 専門家の回答
質問者が選んだベストアンサー
sql文の問題以前に、その文字列を作成しているプログラミング言語の変数展開について理解してないと思われる。 まずは、作成した文字列 $sql_t が意図した文字列になっているのかを確認するのが先でしょう。 mysql_query() 関数を使ってるところをみると、php なのだろうけど、他のプログラミング言語の場合は、まずはそれを明記してください。 とりあえず、phpの波括弧構文では " ken.{$tbl_nu1} " なら 「 ken.tbl_1 」 のように展開されますが、 " ken.{'$tbl_nu1'} "では {''} が残って 「 ken.{'tbl_1'} 」 となり、SQL文としてテーブル名と認識されません。 $の手前に記号がくるのなら波括弧を使わなくても " ken.$tbl_nu1 " でも十分だと思うけど。
その他の回答 (1)
- maiko0333
- ベストアンサー率19% (839/4401)
変数を持ってくるならリテラルからはずさなければなりません。 $sql_t="INSERT INTO `ken`.`kar` (`imei`,`mei`,`nyu`) SELECT `imei`,`mei`,`nyu` from ken.{'"$tbl_nu1"'} union SELECT `imei`,`mei`,`nyu` from ken.{'"$tbl_nu2"'}"; となります。リテラル(定数)の連結が+なら $sql_t="INSERT INTO `ken`.`kar` (`imei`,`mei`,`nyu`) SELECT `imei`,`mei`,`nyu` from ken.{'" + $tbl_nu1 + "'} union SELECT `imei`,`mei`,`nyu` from ken.{'" + $tbl_nu2 + "'}"; です。
お礼
回答ありがとうございます。 ken.$tbl_nu1・・・の形で書きましたら うまくいきました。
お礼
回答ありがとうございます。はい、PHPです。 変数展開の考え方、ご指導ありがとうございます。 ken.$tbl_nu1・・・の形で書きましたら うまくいきました。