PHPからMySQLにデータを渡すと文字化け
PHPからフォームにデータを入れてMySQLに渡すとどうしても文字化けをしてしまいます。
MySQLはEUCらしいのです。
コレが解決すればほぼ完成するのに、最後の最後につまずいてます。
<?php
require_once("../mydb_ini.php");
$con_mydb = mysql_connect($MYDBSERVER, $MYDBUSER, $MYDBPASSWARD);
$selectmydb = mysql_select_db($MYDBNAME, $con_mydb) or die("失敗です");;
$num=0;
$mydbsql = "select * from newsline";
$rst = mysql_query($mydbsql, $con_mydb);
$num = mysql_affected_rows();
$error = "";
$new_no = "";
$new_category = "";
$new_date = "";
$new_content = "";
$new_url_db = "";
$new_target = "";
$new_disabled = "";
if($_SERVER['REQUEST_METHOD']=="POST"){
if(isset($_POST["submit_add"])){
$new_no = htmlspecialchars($_POST["new_no"], ENT_QUOTES);
$new_category = htmlspecialchars($_POST["new_category"], ENT_QUOTES);
$new_date = htmlspecialchars($_POST["new_date"], ENT_QUOTES);
$new_content = htmlspecialchars($_POST["new_content"], ENT_QUOTES);
$new_url_db = htmlspecialchars($_POST["new_url_db"], ENT_QUOTES);
$new_target = htmlspecialchars($_POST["new_target"], ENT_QUOTES);
$new_disabled = htmlspecialchars($_POST["new_disabled"], ENT_QUOTES);
if($error==""){
mb_convert_encoding($content, "EUC-JP");
$mydbsql = "INSERT INTO newsline VALUES('" . $new_no . "','" . $new_category . "', '" . $new_date . "', '" . $new_content . "', '" . $new_url_db . "', '" . $new_target . "', '" . $new_disabled . "')";
$rst = mysql_query($mydbsql, $con_mydb);
}
}
if(isset($_POST["submit_upd"])){
$no = key($_POST[submit_upd]);
$category = htmlspecialchars($_POST["category"][$no], ENT_QUOTES);
$date = htmlspecialchars($_POST["date"][$no], ENT_QUOTES);
$content = htmlspecialchars($_POST["content"][$no], ENT_QUOTES);
$url_db = htmlspecialchars($_POST["url_db"][$no], ENT_QUOTES);
$target = htmlspecialchars($_POST["target"][$no], ENT_QUOTES);
$disabled = htmlspecialchars($_POST["disabled"][$no], ENT_QUOTES);
if($error==""){
mb_convert_encoding($content, "EUC-JP");
$mydbsql = "UPDATE newsline SET category='$category', date='$date', content='$content', url_db='$url_db', target='$target', disabled='$disabled' WHERE no=". $no;
$rst = mysql_query($mydbsql, $con_mydb);
}
}
if(isset($_POST["submit_del"])){
$no = key($_POST[submit_del]);
$mydbsql = "DELETE FROM newsline WHERE no=". $no;
$rst = mysql_query($mydbsql, $con_mydb);
}
if($error==""){
$mydbsql;
$new_no = "";
$new_category = "";
$new_date = "";
$new_content = "";
$new_url_db = "";
$new_target = "";
$new_disabled = "";
}
}
?>
お礼
<? echo htmlentities(stripslashes($m_name)); ?> でいけました! <? echo htmlentities(stripslashes($m_name,ENT_NOQUOTES)); ?> だったからエラーが出たんですね。 本当にありがとうございます。
補足
ご回答ありがとうございます。 一箇所間違えていました。 <? echo htmlentities($m_name,ENT_NOQUOTES); ?> ではなく、 <? echo htmlspecialchars($m_name,ENT_NOQUOTES); ?> でした。 試しに教えていただいた方法でやってみたのですが、 Warning: Wrong parameter count for stripslashes() in 「エラー箇所」 というように出てしまいます。フォームで渡された値に何か問題があるのでしょうか?