• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:PHPでMysqlに絵文字を入力すると・・・)

PHPでMysqlに絵文字を入力すると

このQ&Aのポイント
  • PHP4.3.9とMysql4.1.20を使って作成中の掲示板で、絵文字を入力してもうまくデータに入力されません。
  • ドコモの携帯でも絵文字が表示されません。絵文字が削除される原因は何でしょう?
  • 使用している関数やSQL文を確認しましたが、絵文字がデータに入らない問題の解決策が見つかりません。ご教授お願いします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

はっきりした事は分かりませんが。。。 MySQLは4.1以降、クライアントの文字コード変換等を勝手にやってくれる便利???な機能があるので、その辺が引っかかっている可能性があります。 文字コードに関係無いバイナリ(BLOB形式)として格納すれば大丈夫かもしれません。 参考まで。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • php mysqlについて

    初心者です宜しくお願いします。 phpからデータベースを使いたいのですが(mysql)、mysql_query()関数のところで1366エラーが出ます。 半角英数ならエラーは出ません。 プログラムを貼り付けます。どなたかお願いします、説明をもっと書きたいのですが私もあまりわかってないのでどうもすみません。 今やっていることは全てローカルですwindowsを使ってます、文字コードもshift_jisです。phpもmysqlも一台のコンピュータでやっています。 <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=Shift_JIS"> <title>MySQLへデータを登録</title> </head> <body> DBとの連携テスト結果<br> <?php // DBに接続 if(!$con=mysql_connect("localhost","root","y3kwyuba")){ echo"connect_error"; exit; } // DBを選択 if(!mysql_select_db("test",$con)){ echo"select_db_error"; exit; } //MySQL4.1への対応 //mysql_query("SET NAMES SJIS"); この上の行のコメントをはずすとうまく動くのですが色々調べましたら、この書き方は推奨されないと書いてありました、他に対策はあるのでしょうか? $name = $_POST['nm']; $age = $_POST['age']; // フォームで送られてきたデータでINSERT文を作成 $sql = "insert into t_touroku(name,age) values('$name',$age)"; // SQLを実行 if(!$res=mysql_query($sql,$con)){ echo"query_error"; echo "エラー番号:".mysql_errno(), #エラー番号 "メッセージ:".mysql_error(); #エラーメッセージ exit; } // DBから切断 mysql_close($con); // メッセージ出力 echo"登録完了"; ?> </body> </html> 宜しくお願いします。

    • ベストアンサー
    • PHP
  • PHP?MySQL?どちらで処理するか?

    MySQLでもPHPでもできる処理ってあるやん? 掲示板で見かける指定文字以上のタイトルになったら、それ以降は”...”で表示するのはPHPのmb_strimwidth(?)でも、MySQLのleft関数でもできると思います。 round関数も元の値をPHPで四捨五入するのか、MySQLで元の値を別のフィールド名で、、、。 どっちがええん? なんか線引きが難しくって、訳分からん。 何か基準というか、線引きはないかなー? やっぱり、大量の処理はMySQL?

    • ベストアンサー
    • MySQL
  • PHP+MySQLで文字化けします

    PHPでMySQLに接続して以下のように テーブルの作成・そのテーブルにInsertをすると文字化けします。 PHPサーバーの文字コードはEUC-JP、MySQLの文字コードはlatin1です。 PHPのバージョンは5.04でMySQLのバージョンは4.1.20です。 無料レンタルサーバーなので詳細な設定は変更できません。 <?php // データベースに接続し、選択する mb_language('Japanese'); mb_internal_encoding('UTF-8'); mb_http_output('UTF-8'); $link = mysql_connect('localhost',"user","password") or die('Could not connect: ' . mysql_error()); echo 'Connected successfully'; mysql_select_db('user') or die('Could not select database'); mysql_query("SET NAMES UTF-8",$link); // SQL クエリを実行する $name = 'test'; $query = "CREATE TABLE IF NOT EXISTS `$name` ( `id` varchar(50) primary key, `name` varchar(50), `pw` varchar(50) );"; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); $query = "INSERT INTO $name (id, name) VALUES('test', 'テスト');"; $mojicode = mb_detect_encoding($query); $query = mb_convert_encoding($query, "UTF-8", "$mojicode"); $result = mysql_query($query) or die('Query failed: ' . mysql_error()); // HTML に結果を出力する echo "<table>\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "\t<tr>\n"; foreach ($line as $col_value) { echo "\t\t<td>$col_value</td>\n"; } echo "\t</tr>\n"; } echo "</table>\n"; // 結果セットを開放する mysql_free_result($result); // 接続を閉じる mysql_close($link); ?> まだまだPHP、MySQL共に技術が未熟なため 説明不足な部分が多々あるかと思いますがご教授お願いします。

    • ベストアンサー
    • PHP
  • MYSQL→PHP→10件表示

    現在phpを勉強しているのですがどうしても分からないことがあり、 質問をさせて頂きました。 PHPとMYSQLを使い、プルダウンメニューから検索した結果を 10件表示をしていきたいのですが、どうしてもうまくいかず混乱しております。 どのなたかご存知の方、お伺いしても宜しいでしょうか? $PAGESIZE = 10; //ここにmysqlに接続するスクリプト extract($_REQUEST); if (!isset($page)) { $page = 1; } if(!empty($fld)) { //$fldに検索したい住所が入ってます。 $local = addslashes($fld); $where .= "add1 = '$fld' && "; } if(!empty($where)) { $where = substr($where, 0, -3); $where = "WHERE " . $where; } $sql = "select count(*) as cnt from ○○ ". $where; $rst = mysql_query($sql); $row = mysql_fetch_array($rst); $tcnt = $row["cnt"]; mysql_free_result($rst); $totalpage = ceil($tcnt / $PAGESIZE); $pagehead = "<B>$tcnt 件みつかりました。 " . "[" . ($PAGESIZE * ($page - 1) + 1) . "-"; if ($page < $totalpage) { $pagehead .= ($PAGESIZE * $page) . "] を表示</B>"; } else { $pagehead .= "$tcnt] を表示</B>"; } $sql = "select * from ○○ ". $where. " order by renban desc limit " . $PAGESIZE * ($page - 1) . ", $PAGESIZE"; $result = mysql_query($sql); $rows = mysql_num_rows($result); if($rows == 0){ echo "<p>登録データがありません。</p>"; } else { while($row = mysql_fetch_array($result)){ echo "<p>"; echo $row["renban"]; echo " "; echo $row["tourokubi"]; echo "<br />"; echo $row["people"]; echo " "; echo $row["add1"]; echo $row["add2"]; echo "-"; echo $row["sta"]; echo " "; echo $row["tel"]; echo $row["url"]; echo $row["sejitu"]; echo $row["pr"]; echo "</p><hr />"; } } ?> <?= $pagehead ?> <?php mysql_free_result($result); mysql_close; $param_local = rawurlencode($local); if ($page > 1) { $body .= "<A href = '$PHP_SELF?page=" . ($page - 1) . "&tcnt=$tcnt&local=". $param_local. $param_category. "'>" . "前の $PAGESIZE 件</A>"; } if ($totalpage > 1 and $page < $totalpage) { $body .= "<A href = '$PHP_SELF?page=" . ($page + 1) . "&tcnt=$tcnt&local=". $param_local. $param_category. "'>" . "次の $PAGESIZE 件</A>"; } ?> <?= $body ?> </body> </html>

    • ベストアンサー
    • PHP
  • PHPエラー Warning: mysql_

    OCNサーバープランをスタンダードからビジネスライトへ変更した際、 OCN側で移動してくれたのはいいのですが、入っていた掲示板システムで、「削除」画面で 削除を押すと前サーバーまでは問題がなかったのですが、今回は削除はされるけれどエラー文がでてきます。 Warning: mysql_free_result(): supplied argument is not a valid MySQL result resource in /usr/home/△△/www/htdocs/info/●●.php on line 87 問題の87行目: echo "<br>1件削除しました"; <?php if ($_POST["go_1"]==1) { $db_date = htmlspecialchars($_POST['db_date']); $sql="DELETE FROM keiji_t where kdate='".$db_date."'"; mysql_query($sql,$conn) or die("削除できませんでした"); mysql_free_result($res); echo "<br>1件削除しました"; } ?> 「1件削除しました」という文字はでます。 何が原因かわからず、もし原因として考えられそうなこと教えていただければとこちらにいれさせていただきました。 よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • = などの特定な文字をMySQLに入力すると以降の文字が消えてしまいます。

    PHPで作成したアプリケーションからMySQLにデータを登録する際、 = を含むとそれ以降の文字が登録されません。 又、'や"といったsqlに含まれる文字を入力しても保存されません。 どうすればちゃん保存されなおかつSQL Injectionに対応できるのでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • 絵文字の入力・表示について(掲示板)

    PHP/PostgreSQLでの掲示板を作成しているのですが、i絵文字がちゃんと入力されず、『?』マークになってしまいます。DBはEUC_JPで,rawurlencode関数で普通の文字はちゃんと入力され表示も出来るのですが.... DBに入れる前に、『?』になっています... よろしくお願いします。

  • PHP+MySQL 文字化けについて

    今、PHPとMySQLで掲示板を作っているのですが、どうも文字化けばかりしてしまいサイトを調べるのも苦痛になってきたので質問します。 MySQLもPHPも文字コードUTF-8で作る上で文字化けしないぞ! という設定を載せてくださいm(_ _)m

    • ベストアンサー
    • PHP
  • 携帯サイトでの絵文字対応BBSの作成で絵文字の変換に困っています。

    PHPとMySQLを使って絵文字対応の携帯サイト用BBSを構築しています。データベースに登録した絵文字付のコメントを取得すると、絵文字部分がうまく表示されずに困っています。 現在、携帯サイト用の絵文字対応BBSを作成しています。フォームから絵文字付のコメントを入力して、それをDBに登録、または登録されている絵文字付コメントをDBから取得するというものです。 DBに登録する際に入力した絵文字を「<emoji=1,,,>」のような形に変換してeucJP-winでDBに登録します。 出力する際には「<emoji=1,,>」を対応する絵文字に変換(事前に変換表を作成しました。)して画面に出力します。 その際、直接ソースに記述した<emoji=1,,>は対応する絵文字に変換されて表示されるのですが、DBから取得した絵文字付コメント(例:こんにちは<emoji=1,,>)は対応する絵文字に変換されない状態になっており困っています。 ob_start();                     :                     : <?php $mysql=new MySQL; $sql="SELECT no,title,imp FROM s001osirase ORDER BY no DESC LIMIT 0,3"; $mysql->query($sql); while($row=$mysql->fetch()){ $no=$row['no']; $title=$row['title']; $title=mb_convert_encoding($title,'SJIS-win',mb_internal_encoding()); $imp=$row['imp']; if($imp=="yimp"){ echo '<div style="color:#FF0000;font-size:xx-small;">[重要</div>'; echo '<div style="font-size:xx-small;"><a href="/mobile/s001/bbs/bbs_show.php?no='.$no.'">'.$title.'</a></div>'; }else{ echo '<div style="color:#FF0000;font-size:xx-small;">[普通]</div>'; echo '<div style="font-size:xx-small;"><a href="/mobile/s001/bbs/bbs_show.php?no='.$no.'">'.$title.'</a></div>'; } } ?>                 : //内部文字コード(eucJP-win)をSJIS-winに変換する関数 outpue_encode(); //<emoji=1,,,>部分を絵文字に変換してバッファを出力する関数 emoji_output(); emoji_output関数は以下のとおりです。 function emoji_output(){ $output_str=ob_get_contents(); ob_end_clean(); header('Content-Type: application/xhtml+xml;'); $output_str=preg_replace_callback('/<emoji=([0-9,]+)>/','emoji_output_changea',$output_str); echo $output_str; } コールバック関数emoji_output_changeaで$output_str内の<emoji=1,,,>を絵文字に変換しています。 ob_start()を使ってバッファにためて、emoji_outputで<emoji=1,,>を一括でpreg_replace_call関数を使って絵文字に変換して出力しています。この関数は問題なく動いていると思います。 DBから取得した記事が格納された変数$titleのみ変換されていないように思います。 考えられる原因がお分かりの方、いらっしゃいましたらよろしくお願いします。 わかりづらい文章で申し訳ありません。

    • ベストアンサー
    • PHP
  • PHPについて。

    PHPで占いを作っているのですが、ランダム表示にするにはどうすればいいですか。 <html> <head> <title>入力フォーム</title> </head> <body> <center> <?php //接続 $link = mysql_connect("○○○","○○○","○○○"); if(!$link){ die('Connected error !'.mysql_error()); } //DB選択 $db_selected = mysql_select_db('○○', $link); if(!$db_selected){ die('Connected error !'.mysql_error()); } //フォーム入力文字を表現 $○○= $_POST['name']; /* echo $○○.'<br>'; */ //ハッシュ値の取得 $hash = crc32($○○); if($hash < 0){ $hash = 0 - $hash; } /* echo $hash; */ $result = mysql_query("SELECT ○○") or die("sql error !"); $retukazu = mysql_num_rows($result); $kekka = $hash % $retukazu + 1; //文字コード設定 mysql_query("SET NAMES sjis"); $sql = mysql_query("SELECT ○○ = $kekka"); if(!$sql){ die('query_error !'.mysql_error()); } while($row = mysql_fetch_assoc($sql)){ echo '<center><br />あなたはきっと・・・<br /><br /><font color= "Red"><strong>'.$row['Memo'].'</strong></font>です<br />'; } ?> </p> </body> </html>

    • ベストアンサー
    • PHP