みんなの「教えて(疑問・質問)」にみんなで「答える」Q&Aコミュニティ

こんにちはゲストさん。会員登録(無料)して質問・回答してみよう!

締切り済みの質問

【PHP・MySQL】一文字だけ抜き出したい

php・MySQL初心者です。
何とかここまで自力でやってこれたのですが、もうお手上げで…。
サンプルコードを解析し、部分的に理解しながら進んでる状態です。



やりたいことは、
「ユーザーが入力した文字列の最後の1文字だけを抜き出し、データベースに代入する」です。 ←(2)
ちなみに、
「ユーザーが入力した文字列をそのまま、データベースに代入する」はできました。←(1)

参考に、(1)のソースコードの一部を書きます。
-------------------------------------------
『main.php』
<form action="result.php" method="POST" enctype="multipart/form-data">
<input type="hidden" name="MAX_FILE_SIZE" value="<?= $file_maxsize ?>">
タイトル:<INPUT type="text" name="title" size="50"><br>
コメント:<INPUT type="text" name="comment" size="50"><br>
<input type="submit" value="送信">
</form><hr>
-------------------------------------------
『result.php』
$comment = @trim($_REQUEST['comment']);

//※

$query = "insert into main_t (comment, last)"
. " values ('$comment', '$last')";
$result = mysql_query($query);
-------------------------------------------
だいたいこんな感じで(1)は出来ました。
(関係がありそうなところだけを抜き出したつもりです…)
『main.php』で出力して確認もしました。



(2)の現状の私のコードを書きます。
-------------------------------------------
『result.php』
$x = mysql_query("select right('$title', 1)");
$last = mysql_fetch_assoc($x);
-------------------------------------------
これを(1)の //※  の部分に記述してみましたが、うまくいきません。
出力するとなぜか「Ar」と出てきます…泣

『select right('いちもじ', 1)』で『じ』とちゃんと右一文字が取り出せるのをbatファイル?みたいなので確認しました。
このSQL文をPHP内で行いたいのですが、やり方がわかりません…。
(そもそも根本的に間違っているのでしょうか…)



$x = mysql_query("select * from ○○ where 条件");
$last = mysql_fetch_assoc($x);

みたいにfromで検索先や条件を指定して得た「配列」を取得し、表示する方法はネット検索で沢山見つかったのですが、fromやwhereを使わず、結果も配列ではなく1つだけ得られるような場合は、どうすればよいのでしょうか?

わかりづらい文章ですみません;
難しい質問かとは思いますが、PHPやMySQLに詳しい方がいましたら、是非ともご教授いただけたらと思います。
よろしくお願いいたします。

投稿日時 - 2013-01-06 02:13:18

QNo.7877719

すぐに回答ほしいです

このQ&Aは役に立ちましたか?

0人が「このQ&Aが役に立った」と投票しています

回答(3)

ANo.3

その後、どうですか?

文字エンコーディングについては、お使いのエンコーディングを指定して(あるいは内部エンコーディングでよければ省略してもよいです)、以下のコードで動くのではないでしょうか?
エンコーディングはutf8としていますが、これは適宜変えてください(もしくは省略してください)


$last_char = mb_substr($str, mb_strlen($str,'utf8')-1, 1, 'utf8');

まだ質問が閉じられていなかったので、気になりました。

投稿日時 - 2013-02-04 17:45:17

ANo.2

通りがかりのものです。
ユーザからの入力の最後の一文字を取得するために、データベースを使用する必要はありません。PHPで行うのが一般的です。
まず、mb_系の関数が使えることを確認してください。多分使えます。もし使えない場合は使えるようにしてください。
http://php.netで、これらの関数の使い方を学んでください。

健闘を祈る。

参考URL:http://php.net/

投稿日時 - 2013-01-09 11:56:07

ANo.1

mb_substr
http://php.net/manual/ja/function.mb-substr.php

サポートされる文字エンコーディング
http://php.net/manual/ja/mbstring.supported-encodings.php

//※の部分は以下のようになるかと

$encoding = "SJIS";

$last = mb_substr($title, -1, 1, $encoding);


※PHPのリファレンス見ただけでテストとかしていません。エンコーディングは環境に応じて変えてください。

ご参考になれば幸いです。


>php・MySQL初心者です。
それどころか、プログラミング自体、初心者ですよね・・・。
これ難しい質問じゃなくて文字列処理の問題で、基礎的なことです。ようするに勉強不足なだけです。(だからPHPをろくにしらない私でも答えられるわけで・・・)
ネットは基礎的なことを学ぶには不向きな面もありますので、書籍で基礎を体系的に学ぶことをおすすめします。(一番いいのは知っている人に教えてもらうことですが、難しいですよね)

あと、エスケープ処理を行ってください。(下のリファレンスの例を参考にしてください)

mysql_real_escape_string
http://php.net/manual/ja/function.mysql-real-escape-string.php

mysqli_real_escape_string
http://php.net/manual/ja/mysqli.real-escape-string.php

リファレンスに mysql_query とかは現在では非推奨とあるので、注意してください。

投稿日時 - 2013-01-06 07:16:46

あなたにオススメの質問