![](http://oshiete.xgoo.jp/images/v2/pc/qa/question_title.png?e8efa67)
宜しくお願い致します。
PHP+MySQLでシステムを構築しております。
PHPで作製したフォームからSQL文を発行する際に漢数字の『十』が含まれるとちゃんと検索されません。
ネットで調べてみたところ、この『十』はShift_jisでは『5c』文字となるため、『十』の2バイト目が『5c』(\と同じ)なので、2文字目が消されてしまい、うまく検索できないという事がのっておりました。
この現象を回避する為に、検索時に『十』の後にバックスラッシュ(\)を3個付加してみたところ、うまく検索できました。
そこで、PHPのフォーム上で正規表現により『十』を検索し、『十\\\』に置き換えてみようと試みたのですが、PHPのフォーム自体がShift_jisで作られている為、『十』を認識できず、PHPエラーが返されてしまいます。
こういった場合、どの様にすれば回避できるのでしょうか?
ご教授の程、宜しくお願い致します。
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?e8efa67)
No.2ベストアンサー
- 回答日時:
> mysql_real_escape_string() expects parameter 2 to be resource, null given
意訳すると、mysql_real_escape_string関数の2つ目のパラメータは資源型でなければならないが、実際には資源型ではなくnullだった、というような意味です。
mysql DBへの接続に失敗していませんかね?
まず、以下で切り分けしたら如何でしょうか。
$link = mysql_connect(*, *, *); // *は適宜書き換えて下さい
if (!$link) {
die('接続できませんでした: ' . mysql_error());
} else {
echo('接続しました');
}
ありがとうございます!
mysql_connectの前にこの関数を使っていました(-_-;)
今度はエラーが返らず正常な動作をしました。
具体的なスクリプトまでご記入いただき、誠にありがとうございます!
本当に助かりました!!
![](http://oshiete.xgoo.jp/images/v2/common/profile/M/noimageicon_setting_01.png?e8efa67)
No.1
- 回答日時:
まず、問題が発生するのは、「十」だけではありません。
正しくない対策をすると、セキュリティの面で脆弱になります。
ですので、しっかりと対策をすることをお勧めします。
何点か、一般的な注意事項を書きます。
・PHPとmysqlのエンコーディングを合せる
PHPでinternal_encodingをSJISにするならば、MySQLの各種エンコーディング設定をSJISにした方が、問題が少ないです。
・php.ini設定で、magic_quotes_gpcをoffにする
少なくともSJISを使う場合は必須です。
・addslashesを使わないでエスケープする
方法1:mysql_real_escape_stringを使う
例えば、$sql="select foo from bar where hoge='". mysql_real_escape_string($_GET['hoge']). "'";
方法2:mysqli関数のmysqli_stmt_bind_paramなどを使う
これについては、mysqlのバージョンの制限があります
詳細は、PHPマニュアルを参照して下さい
この回答への補足
ありがとうございます。早速試してみました。
PHPのバージョンが4台なので、mysqli_stmt_bind_paramは使用できなかったので、mysql_real_escape_stringを使用してみました。
php.iniのmagic_quotes_gpcをOFFに設定し、mysql_real_escape_stringを使用してみたところ、下記の様なエラーが返って来ました。
mysql_real_escape_string() expects parameter 2 to be resource, null given
エラーの内容を直訳すると、
パラメータ2が資源(与えられるヌル)であるのを予想する
となっておりますが、何の事やらさっぱりです・・・
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
似たような質問が見つかりました
- Excel(エクセル) PHPプログラムをエクセルに張り付けると検索ボックスがでてくる! 3 2022/05/08 07:10
- PHP phpの imap_search で漢字コード 1 2022/09/06 17:32
- MySQL #1062 - '0' は索引 'PRIMARY' で重複しています。とでています。 1 2023/01/01 06:13
- Visual Basic(VBA) WordのVBAについて 5 2023/01/11 14:38
- オープンソース csvデータのダブルクォーテーションで囲まれた文字内にあるカンマを削除したい 3 2022/09/02 15:17
- Excel(エクセル) 【Excel】指定のセル内容を基に別シートのセルを検索して選択する【VBA】 1 2022/06/16 16:16
- ドライブ・ストレージ Windows10でのファイル内の文字列検索 SSDに寿命? 4 2022/07/12 03:25
- その他(ブラウザ) Mycrosoft Edge フォームの履歴を完全に削除したい 3 2022/08/11 09:59
- JavaScript フォームが空欄の時にフォームの外をクリックすると、エラーが出るコードを調べています。 1 2023/06/25 11:51
- Excel(エクセル) Excelでの検索結果を含む行だけを表示させたい 5 2023/03/10 17:08
関連するカテゴリからQ&Aを探す
おすすめ情報
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
(初心者)MySQLやmaraDBで、crea...
-
SQLです教えてくださいお願いし...
-
#1062 - '0' は索引 'PRIMARY' ...
-
SQLです教えてくださいお願いし...
-
utf8bomとutf8mb4の違いがいま...
-
テーブル名が可変の場合のクエ...
-
SQLで日付別のIDを生成するには
-
うまくいきません教えてくださ...
-
SQLでカラムを追加し、条件に合...
-
SQLです教えてください。
-
エラー 1068 (42000): 複数の主...
-
MySQLのテーブル作成でハイフン...
-
SQLについて質問です。 SELECT ...
-
データベースの接続に失敗して...
-
SQL文のエラー
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
SQLです教えてくださいお願いし...
-
「総降水量が100mm以上になる...
-
SQLで漢字名称を都道府県や市区...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
円マークが付加されて保存され...
-
MySQLでshal()関数のエラーがで...
-
PHP,MYSQLで検索が出来ません。...
-
Mysqlにhtmlのフォームから...
-
文字化け:xamppを利用したphp...
-
【PHP・MySQL】一文字だけ抜き...
-
ズブの素人です。mysqlについて...
-
Shift_jisの『十』を含む文字列...
-
実行時エラー3131 FROM 句の構...
-
MySQLでデータベースにデータin...
-
JAVA SQLServerException 列名 ...
-
<VB.NET>INSERT文でDBにデータ...
-
ResultSetインターフェイスでの...
-
VBAをつかってクエリの情報を抽...
-
テキストボックスに入れた内容...
-
Pro*Cの構文エラー
-
PHPで[]の使い方について
-
エクセルVBAについて
-
insert1つの処理でもトランザ...
-
エラー3011
おすすめ情報