• ベストアンサー

ダブルクォート内で変数を展開

PHPでMySQLのINSERTがうまくいかず、困っています。 検索したところ、下記の情報がありました。 http://okwave.jp/qa1324983.html ここの良回答20ptの通りすると動きますが、 ダブルクォート内で変数を展開させるにはどうしたらいいでしょうか?。 ↓これをダブルクォート内で変数を展開させたい mysql_query("insert into area_tbl (area)values('$area')"); よろしくお願いします。

  • xor
  • お礼率93% (14/15)
  • PHP
  • 回答数2
  • ありがとう数6

質問者が選んだベストアンサー

  • ベストアンサー
  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.2

そのままで展開されませんか? mysql_query("insert into area_tbl (area)values('$area')"); もしくは mysql_query("insert into area_tbl (area)values('{$area}')"); もとの質問・回答はシングルコーテーションの中では展開がされないため、 文字列の結合をつかっていただけですね

xor
質問者

お礼

後者(下記)の通りで解決しました。 mysql_query("insert into area_tbl (area)values('{$area}')"); ありがとうございました。

その他の回答 (1)

  • Chary_spy
  • ベストアンサー率40% (75/183)
回答No.1

eval とか `` とか 試してみました?

xor
質問者

お礼

回答ありがとうございます。 evalは求めていたのと違う気がします。 ``は私が試した範囲ではだめでした。

関連するQ&A

  • MySQLのINSERT文で変数展開ができません

    はじめまして。 MySQL+PHP初心者なのですが、INSERT文中での変数展開がうまくいきません。 フォームから受け取ったデータを単純にレコードに追加するだけなのですが、 mysql_query('insert into area_tbl (area)values($area)'); areaのデータ型はテキストで、$areaをクォーテーションで囲めば当然のごとくそのまま表示されてしまいますし、事前に $area = $_POST['area'] の処理をしてもダメです。直後に echo "$area" をするとフォームに入力した文字列が表示されるので、データの受け渡しはうまくいっていると思います。また ($area) の代わりに'あいうえお'といれると【あいうえお】とデータベースに反映されるので、MySQLとPHPの日本語対応の問題もないと思います。なぜでしょうか? ご指導のほどよろしくお願いいたします。

    • ベストアンサー
    • MySQL
  • C言語で変数の内容をINSERTする方法

    タイトルのように、C言語で変数の内容をINSERTする方法で悩んでいます。 今はmysql_query(mysql, "insert into [DBname] values ( , , , )");で変数ではなく普通のテキストや数字をデータベースに入力することは出来るのですが、プログラム中で計算した変数をデータベースに入力できないのです。 どなたか教えてください・・・。

    • ベストアンサー
    • MySQL
  • insertクエリで、値にシングルクオートがある場合

    insertクエリで、値にシングルクオートがある場合、 どのようにして解決すればよいのか、お教え願えますでしょうか。 サンプル: $data = 'abcd'efg'hijk'; $query = "INSERT INTO テーブル名 ( フィールド名 ) VALUES( $data )";

    • ベストアンサー
    • PHP
  • "と'の使い方を教えていただけないでしょうか

    お世話になります。 "と'の使い方で悩んでおります。 POSTでname="a"のINPUTBOXからデータを送信し、それをPHPで受けて、MySQLのテーブルのカラムに挿入するスクリプトで悩んでいます。 次のようにすると、うまく動作します。 mysql_query("INSERT INTO tb VALUES ('$_POST[a]')"); あるいは $b=$_POST[a];や$b=$_POST['a'];や$b=$_POST["a"];で mysql_query("INSERT INTO tb VALUES ('$b')"); 次のようにすると、失敗します。 mysql_query('INSERT INTO tb VALUES ("$_POST[a]")'); あるいは $b=$_POST["a"];などで mysql_query('INSERT INTO tb VALUES ("$b")'); これは私の環境だけで起こることなのでしょうか。 むしろ' 'で囲うと、文字そのものが展開されるので"$_POST[a]"としなければいけないと思うのですが。いかがでしょうか。 また、そもそも$_POST[a]で受け取るときに添字にクォーテーションはつけなくてもよいのでしょうか。 どなたか、お教えいただけないでしょうか。あるいはヒントだけでも助かります。 どうか、よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • perlのシングルクォートとダブルクォートの置き換えについて

    perlのシングルクォートとダブルクォートの置き換えについて お世話になります。 現在、perlにて開発を行っているのですが、一つ問題に当たってしまいました。問題になっているのは、文字列を扱う部分です。perlにおいて文字列はシングルクォートに囲まれたものと、ダブルクォートに囲まれたものがあると思うのですが、この両者の違いは、内部に書かれた変数等を展開するか否かだったと思います。 実は開発の途中でこのシングルクォートで囲まれた文字列を、ダブルクォートに囲まれた文字列に変更しなければいけなくなりました。つまり $test = 'aaa';  を  $test = "aaa"; としたいのです。これってperlの仕様的に可能なのでしょうか? かなり悩んだのですが、どうしてもわかりませんでした。 ちなみに、なぜこの処理が必要なのかというと、HPの製作をしているのですが、設置したフォームからその内容を得るというプログラムを書いた際に、そのフォームの内容がシングルクォートでしか得られないからです。シングルだとそののちの処理に影響が出てしまうのです。 だれかご存じないでしょうか。よろしくおねがいします。

    • ベストアンサー
    • Perl
  • シングルクォート、ダブルクォート使用方法

    初心者で勉強中です。 相当素人な質問なんですがよろしくお願いします。 Perlで使われる、シングル、ダブルクォートの自分の認識なのですが ・ダブルクォートは変数やエスケープ文字を評価してくれる。 ・シングルはそのまま文字列として出力される。 ということだと思っているのですがただ、『print』の後の表示させる文字列、数字などがシングルで囲まれていたりダブルだったり、またどちらも使わない場合などあるのですがこの使い分けはどのようにすれば良いかわかりません。 単に文字列の場合でもダブルクォートで囲っていたりと・・・ 以下の例ですと use strict; print "Content-type: text/html\n\n"; my $hensu = 1; print $hensu."<br>\n"; $hensu = "moji"; print "$hensu"; 上記をブラウザ出力すると 1 moji となるということなのですが、数字であればダブルクォートで囲まなくても展開されるということでしょうか?また後ろの2行の $hensu = "moji"; print "$hensu"; とは、どちらもダブルクォートで囲む必要があるのでしょうか。 法則性についてどなたか分かるかた、おしえていだだけますでしょうか。

    • ベストアンサー
    • Perl
  • 変数のinsertに関しまして

    MySQLのインサートに関して質問です。 2つの値を登録したい場合、 下記のように対応すれば、 データの挿入は通常どおり完了しますが、 insert into テーブル名 (フィールド1, フィールド2) values (値1, 値2);  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ 私の場合は、 「ken_name」と「machi_name」という変数を、 上記でいうところの、 「値1」と「値2」に入力したいと思っています。 変数の指す部分は、 それぞれ30文字程度の英数字です。 プログラム内で、 以下のように、 インサートのクエリー処理を行ってみたら、 DB接続も正常に出来ているし、 エラーとかも一切出ていないのですが、 DB内のテーブルに何も登録されていませんでした。 insert into テーブル名 (フィールド1, フィールド2) values (ken_name, machi_name);  ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ ̄ やり方としては、合っていますでしょうか? 何かアドバイスいただけると嬉しいです。 宜しくお願い致します。

  • 別テーブルからselectした値を他のテーブルにinsertしたいのですが、上手くできません

    以下のように行ったのですが、 全ての値が別テーブルにinsertされません。 $sql = "SELECT tbl_A.id, tbl_A.data FROM tbl_A "; $rst = mysql_query( $sql ); while ( $col = mysql_fetch_array( $rst ) ) { $sql = "INSERT INTO tbl_B (          date, id, data ) VALUES ( '" . date( 'Y-m-d' ) . "', '" . mysql_real_escape_string( $col['id'] ) . "', '" . mysql_real_escape_string( $col['data'] ) . "' )"; } このやり方では、テーブル内の1つの値しかinsertされません。 selectされた全ての値をinsertするにはどのようにしたら良いのでしょうか? よろしくお願いします。 DB:mysql5 SP:php5

    • ベストアンサー
    • MySQL
  • 配列の初歩

    初めてのプログラミングのため、初歩的な質問で申し訳ございません。 PHP+MYSQLに挑戦していますが、 複数の値を配列(これがわかりません)を使って、レコードを増やすやり方がわかりません。 $area = 5; $area2 = 6; $sql = "insert into t1 (number,number2) values ('.$area.','.$area2.')"; $res = mysql_db_query($db,$sql); なら、レコードを増やすことができましたが、これを配列(5,6)を使ってやるにはどうしたらよいのでしょうか。何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • postした値のデータ型

    htmlのフォームからpostした値を整数型として受け取れますか? $id = $_POST['id']; こんな感じで受け取ると文字列として受け取っているようなのでmysqlに保存できません シングルクォートで囲むと文字列になるので囲わないでdbに入れたいのです mysql_query("INSERT INTO table(id) VALUES($id');");

    • ベストアンサー
    • PHP

専門家に質問してみよう