ホームページ >バックエンド開発 >PHPチュートリアル >PHP はデータをデータベースに保存します。エコーされた SQL は mysql では正常に実行できますが、PHP で実行するとエラーが発生します。

PHP はデータをデータベースに保存します。エコーされた SQL は mysql では正常に実行できますが、PHP で実行するとエラーが発生します。

WBOY
WBOYオリジナル
2016-06-23 13:49:571317ブラウズ

コードを見てください
$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 ではありません

したがって、データベースは受信文字列を認識できないため、エラーが発生します

データベースのエンコードは何ですか?
挿入されたデータとデータのエンコーディングは一貫している必要があります。


エンコーダーにも問題があると思います

データベースに送信しているのは gbk でエンコードされた文字列であり、データベースのデフォルトの文字セットは gbk ではありません

したがって、データベースは受信文字列を認識できません。エラーが発生します

転送します エンコードされたecho SQLは正常ですが、それをgbkにデータベースに送信する方法がわかりません。エンコードの問題であるはずですが、問題がどこにあるのかわかりません。 . データベースに接続するときに設定したエンコーディングは utf8 です


データベースのエンコーディングは何ですか? 挿入されたデータとデータのエンコーディングは一貫している必要があります。

データベースは utf8 で、挿入された SQL パラメーターをトランスコードしました。エコー SQL の実行は問題ありません

1. コードにデータベース操作関数がないため、どのデータベースを使用しているかわかりません。したがって、私の返信では何も提案しませんでした
2. 受信データに対して $title = iconv("utf-8","gbk",strip_tags($title)); のような操作を行ったので、これはutf-8 エンコードは gbk エンコードに変換されます 3. php を使用して、エラー メッセージ内の xB2xE2xCAxD409... を出力します

echo "xB2xE2xCAxD409..."
これは gbk エンコードされた Test 09... です
4.接続すると、データベースは utf8 の使用を宣言しているため、これらの gbk エンコードされたデータは utf-8 範囲に属していないため、エラーが報告されます

声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。