• ベストアンサー

ダブルコーテーションやシングルコーテーション

私の持っている参考書の中に、次のように、 変数をダブルコーテーション、シングルコーテーション、およびピリオドで囲んでいるSQL文があるのですが、 この場合、なぜ、ダブルコーテーション、またはシングルコーテーションのみでは駄目なのでしょうか? [参考書の記載] where カラム名>="'.変数.'" ※変数は日付が入ります。varchar型です。

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

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

>$sdate=$_POST['sdate']; >$edate=$_POST['edate']; >$sql='select*from question_tb where purchase_date>="'.$sdate.'" and purchase_date<="'.$edate.'"'; print $sql; とすれば何がおこなわれているかわかるのでは? ちなみにPOSTで受け取ったデータをそのままSQLに投げるのはNGですので 適切なエスケープ処理が必要です $sql ='select * from question_tb where purchase_date>='; $sql.='"'.mysql_real_escape_string($sdate).'"'; $sql.='" and purchase_date<=' $sql.='"'.mysql_real_escape_string($edate).'"'; ちなみに日付の間をとるならpurchase_date between sdate and edate 的な書き方の方が一般的です

mic_goto
質問者

お礼

ご回答ありがとうございます。 ご回答をよく読んで、自分なりに試行錯誤したら理解できました。 初歩的なことで失礼いたしました。

すると、全ての回答が全文表示されます。

その他の回答 (1)

  • nora1962
  • ベストアンサー率60% (431/717)
回答No.1

推測ですがその参考書はphp+MySQLを記述しているのではありませんか? PHPでがピリオドで文字列を連結します。 http://www.phpbook.jp/tutorial/string/index2.html PHPでSQLを組み立てて実行しようとしているのではないでしょうか。 いずれにしてももう少し全体像を出してもらわないと適切な回答はつかないと思います。

mic_goto
質問者

お礼

ご推測の通り参考書はphp+MySQLを記述しています。 記載に不足があり大変失礼いたしました。 補足ですが、 以下のように、where句で絞り込んでデータを表示するという構文なのですが、 受けページの3行目の「"'.」で囲ってあるのが、 どういう意味があるのかが分からなくて質問した次第でございます。 【送りページ】 <form method="post" action="uke.php"> <input type="date" name="sdate">~<input type="date" name="edate"> 【受けページ】 $sdate=$_POST['sdate']; $edate=$_POST['edate']; $sql='select*from question_tb where purchase_date>="'.$sdate.'" and purchase_date<="'.$edate.'"';

すると、全ての回答が全文表示されます。

関連するQ&A