6

utf8_general_ci私はメンバーテーブルに挿入する登録フォームを持っていました.照合はSET NAMES utf8.フォーム フィールド、SQL クエリの実行後、データベース テーブルを確認すると、フィールドは 'H' として挿入されます。残りのアルファベットは、文字列é, řに on behindなどの特殊なアルファベットが含まれている場合は常に挿入できません。

誰か助けてくれませんか?ありがとう。

解決:

<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />

mysql_query("SET NAMES utf8");

上記の 2 行は、データベースへの入力と Web ページへの出力を受け入れるための重要な部分です。

アドバイスをくれてありがとう。

4

3 に答える 3

2

エンコード後にデータを挿入してみてください。mysql_real_escape_string()エンコードしてみてください。次に、挿入クエリを実行します。

編集:-

この回答は1年前に投稿されました。これで、php 5のmysql_real_escape_string()はmysqli::real_escape_stringこの形式で機能します。こちらをご確認ください

于 2013-02-20T10:11:56.790 に答える
1

また、非常に多くの異なる文字セット コーディングについて心配したくない場合、または htmlentities が機能しない場合は、代わりの方法として、MySQl DB への書き込み/挿入に mysqli DB 接続 (および PHPV5) フォーム ポストを使用しました。

$Notes = $_POST['Notes']; //can be text input or textarea.

$charset = mysqli_character_set_name($link);  //only works for mysqli DB connection
printf ("To check your character set but not necessary %s\n",$charset);  

$Notes = str_replace('"', '&quot;', $Notes);  //double quotes for mailto: emails.  
$von = array("ä","ö","ü","ß","Ä","Ö","Ü"," ","é");  //to correct double whitepaces as well
$zu  = array("&auml;","&ouml;","&uuml;","&szlig;","&Auml;","&Ouml;","&Uuml;","&nbsp;","&#233;");  
$Notes = str_replace($von, $zu, $Notes);  
echo " Notes:".$Notes."<br>" ;  
$Notes = mysqli_real_escape_string($link, $Notes); //for recommended mysqli DB connection.
//$Notes = mysql_real_escape_string($Notes); //for old deprecated mysql DB connection.

// mysqli_real_escape_string Escapes special characters in a string for use in an SQL statement

echo " Notes:".$Notes ;  //ready for inserting
于 2014-01-02T13:06:30.410 に答える