※ ChatGPTを利用し、要約された質問です(原文:SQL文で「あ」などの2バイトの文字を条件に入れるとエラーになる。)
SQL文で2バイト文字を条件に入れるとエラーが発生する
このQ&Aのポイント
SQL文で条件に2バイト文字を入れるとエラーが発生します。
PHPとPostgreSQLの組み合わせでファイルを作成しましたが、2バイト文字を条件に入れると動作しません。
原因は「あ」などの2バイト文字が原因かもしれませんが、他の原因も考えられます。
SQL文で「あ」などの2バイトの文字を条件に入れるとエラーになる。
PHPとPostgreSQLでファイルを作成しました。
(2)、(3)の場合だと問題なく動作しますが、
(1)の場合だと動作しません。
「あ」が2バイトなのが原因かとおもうのですが、
よくわかりません。他に原因あるのでしょうか。
**********************************************
環境 PHP5 Apache2.2 PostgreSQL8.24
*********************************************
<?php
// 接続設定(サーバ/データベース/ユーザ/パスワード)
$sv = "localhost";
$dbname = "test";
$user = "user";
$pass = "pass";
// 文字コード
$enc_disp = "EUC-JP";
$enc_db = "EUC-JP";
// データの文字コードを変換する関数
function cnv_enc($string, $to, $from) {
// 文字コードを変換する
$det_enc = mb_detect_encoding($string, $from . ", " . $to);
if ($det_enc and $det_enc != $to) {
return mb_convert_encoding($string, $to, $det_enc);
}
else {
return $string;
}
}
// データベースに接続する
$conn = pg_connect("host=$sv dbname=$dbname
user=$user password=$pass") or die("接続エラー");
(1)$sql = "select * from test WHERE name LIKE N'あ%'";
(2)$sql = "select * from test WHERE tel LIKE N'090%'";
(3)$sql = "select * from test WHERE no LIKE N'a%'";
?>
*********************************************
nameには、名前の文字列(いとう、さとう)が、
telには、電話番号(090…、03…)が、
noには、アルファベット一文字(a、b)が
入力されています。
*********************************************
お礼
回答ありがとうございます。 Apacheを再起動したらなぜか動作しました。 ありがとうございました。