ホームページ >バックエンド開発 >PHPチュートリアル >PHP はデータをデータベースに保存します。エコーされた SQL は mysql では正常に実行できますが、PHP で実行するとエラーが発生します。
コードを見てください
$title = $_POST["title"];
$metact_t = $_POST["metact_t"];
$Department = $_POST["Department" "] ;
$metinfo = $_POST["metinfo"];
$jb = $_POST["jb"];
$Department_t = $_POST["Department_t"];
渡されたパラメータを取得し、出力テストを実行します。質問
$title = iconv("utf-8","gbk",strip_tags($title));
$metact_t = iconv("utf-8","gbk",strip_tags($metact_t)); = iconv("utf-8","gbk",strip_tags($acter));
$Department = iconv("utf-8","gbk",strip_tags($Department)); utf-8","gbk",strip_tags($metinfo));
$jb = iconv("utf-8","gbk",strip_tags($jb));
$status = iconv("utf-8" ,"gbk",'未解決');
$Department_t = iconv("utf-8","gbk",strip_tags($Department_t));
$saveMeetingSql = "t_metact(id,title,metact_t,acter ,部門,metinfo,jb,デパートメント_t,ステータス)".
" 値('$id','$title','$metact_t','$acter','$Department','$metinfo','$jb ' ,'$Department_t','$status')";
echo ($saveMeetingSql );
トランスコードされた出力 SQL は次のとおりです:
insert into t_metact(id,title,metact_t,acter,Department,metinfo,jb,Department_t, status ) value('2','テスト 0908','2014-09-09','admin','ネットワーク部門','ceshi','Major','ネットワーク部門','未解決')
SQLマネージャーでは普通に挿入できます
php: ncorrect string value: 'xB2xE2xCAxD409...' for columns 'title' at row 1 で報告されたエラー出力 error は、title に対応するテスト 0908 が通常の文字形式ではないことを意味します、データベース設計フィールドは varchar の長さは 20 です。問題がどこにあるのかわかりません。専門家にアドバイスをいただければ幸いです
ディスカッションへの返信 (解決策)
データベースのエンコードは何ですか?
挿入されたデータとデータのエンコーディングは一貫している必要があります。
エンコーダーにも問題があると思います
データベースに送信しているのは gbk でエンコードされた文字列であり、データベースのデフォルトの文字セットは gbk ではありません
したがって、データベースは受信文字列を認識できません。エラーが発生します
転送します エンコードされたecho SQLは正常ですが、それをgbkにデータベースに送信する方法がわかりません。エンコードの問題であるはずですが、問題がどこにあるのかわかりません。 . データベースに接続するときに設定したエンコーディングは utf8 です
データベースは utf8 で、挿入された SQL パラメーターをトランスコードしました。エコー SQL の実行は問題ありません
echo "xB2xE2xCAxD409..."
これは gbk エンコードされた Test 09... です
4.接続すると、データベースは utf8 の使用を宣言しているため、これらの gbk エンコードされたデータは utf-8 範囲に属していないため、エラーが報告されます