※ ChatGPTを利用し、要約された質問です(原文:MySqlに登録したデータを更新すると文字化けする)
MySqlに登録したデータを更新すると文字化けする
このQ&Aのポイント
MySQLのクライアントの文字コードをsjisに設定することで、MySqlに登録したデータを更新しても文字化けしません。
質問文章のコードでは、MySQLのクライアントの文字コードをsjisに設定しています。
更新時に文字化けが発生する場合は、文字コードの設定を確認してみてください。
MySqlに登録したデータを更新すると文字化けする
PHP5.2
MySql5.1.34
文字コードSJIS
MySqlに登録したデータを更新すると文字化けします。
回答をよろしくお願い致します。
// MySQLのクライアントの文字コードをsjisに設定
mysql_query("SET NAMES 'sjis'")
or die("can not SET NAMES sjis");
// データを取り出す
$sql = "SELECT created_at, mes, url FROM message WHERE (id = ".$_POST["id"].");";
$res = mysql_query($sql, $conn) or die("データ抽出エラー");
$row = mysql_fetch_array($res, MYSQL_ASSOC);
// 取り出したデータを表示する
print "<form action=koushin.php method=post accept-charset=\"Shift_JIS\">";
print "日付:<input type=text size=30 name=created_at value=" . $row["created_at"] . "> ";
print("<br>");
print("<br>");
print "メッセージ:<input type=text size=50 name=mes value=" . $row["mes"] . "> ";
print("<br>");
print("<br>");
print "URL:<input type=text size=80 name=url value=" . $row["url"] . "> ";
print "<input type=hidden name=id value=" .$_POST["id"]. ">";
print("<br>");
print("<br>");
print "<input type=submit value=更新>";
print("<br>");
print("<br>");
print "</form>";
koushin.php
<?php
$sv = "サーバ";
$dbname = "データベース";
$user = "ユーザー";
$pass = "パスワード";
$conn = mysql_connect($sv, $user, $pass) or die("接続エラー");
mysql_select_db($dbname) or die("接続エラー");
$id = $_POST["id"];
$created_at = $_POST["created_at"];
$mes = $_POST["mes"];
$url = $_POST["url"];
$sql = "UPDATE message SET updated_at = now() , created_at = '{$created_at}' , mes = '{$mes}' , url = '{$url}' WHERE id = $id";
$res = mysql_query($sql, $conn) or die("更新エラー");
mysql_close($conn);
?>
お礼
7461494 様 アドバイスをありがとうございました。 お礼が遅れて申し訳ありません。 // MySQLのクライアントの文字コードをsjisに設定 mysql_query("SET NAMES 'sjis'") or die("can not SET NAMES sjis"); str_replace は文字列を置き換える関数 で解決しました。
補足
rtgp 様 すみません。 お名前が間違っていました。 失礼しました。