投稿者 メッセージ
<  PHPプログラミング  ~  「'」はデータベースに入力できない?
take
投稿1時間: 火 2月 21, 2006 3:23 pm  引用



登録日: 2006年2月 01日
投稿記事: 21

HTMLページのフォームの<textarea name="honbun">に入力したデータをMySQLのテーブルに入力したく下記のように記述しました。

$sql="insert into テーブル名 values (0,'$honbun')";
$result=mysql_query($sql);

で、だいたいは入力できるのですが、「'」(アポストロフィーっていうんですかね?)が半角で入力されているとデータベースに入力されなくなってしまいます。なぜなのでしょうか?これを回避できる方法などがございましたら教えてください。よろしくお願いします。
トップに移動
ユーザー情報を表示 メッセージを送信
ゲスト
投稿1時間: 火 2月 21, 2006 3:45 pm  引用






'は \'のようにエスケープする必要があります。
でないとSQL文がおかしくなってしまいます。
トップに移動
take
投稿1時間: 金 2月 24, 2006 1:25 pm  引用



登録日: 2006年2月 01日
投稿記事: 21

あっ、そうか。「'」入れたら途中で文を区切ってしまいますもんね。
これをエスケープする関数とかってないものでしょうか?
トップに移動
ユーザー情報を表示 メッセージを送信
ゲスト
投稿1時間: 金 2月 24, 2006 3:34 pm  引用






ありますよ。
mysql なら mysql_escape_string
pearならquote で。
トップに移動
RR2000
投稿1時間: 金 2月 24, 2006 4:07 pm  引用



登録日: 2006年2月 21日
投稿記事: 6

mysql_escape_stringよりmysql_real_escape_stringの方がいいみたいです。
http://dev.mysql.com/doc/refman/4.1/ja/mysql-escape-string.html


ただ、この辺は文字コードによっては問題が出るようです。
というか、シフトJISの場合ですね。
http://d.hatena.ne.jp/t_komura/20060122#1137944280
あたりを参考にしてみて下さい。
トップに移動
ユーザー情報を表示 メッセージを送信
take
投稿1時間: 金 3月 24, 2006 2:41 pm  引用



登録日: 2006年2月 01日
投稿記事: 21

できました。どうもありがとうございました。
マニュアルではえらい難しいような感じがしたのですが
mysql_real_escape_string()
の()の中にその文字列を入れればよかったんですね。
返事遅くなってしまいましたがほんとにどうもありがとうございました。
トップに移動
ユーザー情報を表示 メッセージを送信
特定期間内の記事を表示:   
All times are GMT +9:00

次のトピックを表示
前のトピックを表示
Page 1 of 1
フォーラム一覧  ~  PHPプログラミング

トピックの新規投稿   返信


 
移動先:  

新規投稿: 不可
返信: 不可t
自分の記事の編集: 不可
自分の記事の削除: 不可
投票への参加: 不可




Powered by phpBB
customized by phpspot.