• ベストアンサー
  • すぐに回答を!

配列にダブルクォーテーション付の値をいれたい

以下のようにmemberテーブルから抽出したnameKanji配列に、 ダブルクォーテーション付の値をいれたいのです。 memberテーブルには、 1.田中 2.斉藤 3.鈴木 とはってるとして、 $array_nameKanji配列には、最終的に、 {"田中","斉藤","鈴木"} といれたいのです。 ***************************************** $sql = "SELECT nameKanji FROM member"; $rs = mysql_query($sql,$conn); $totalMember = mysql_num_rows($rs); for($i=0 ; $i<$totalMember ; $i++) { $rec = mysql_fetch_assoc($rs); → $array_nameKanji[$i] = $rec["nameKanji"]; } *************************************************** たとえば、 $array_nameKanji[$i] = "\"" . $rec["nameKanji"] . "\""; こうしてみると、 {"""田中""","""斉藤""","""鈴木"""} となってしまいます。 うまくやる方法をおしえてください。

共感・応援の気持ちを伝えよう!

  • PHP
  • 回答数4
  • ありがとう数4

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

  • ベストアンサー
  • 回答No.3
  • shimix
  • ベストアンサー率54% (865/1590)

ANo.1 です。 本題とは無関係ですが、mysql_queryを使っているのが気になります。すでに非推奨ですので、早急にPDOで書き直してください。 http://php.net/manual/ja/mysqlinfo.api.choosing.php またデータベース関数(手続き型)としても「件数を取得してから、その件数までforループで回す」という手順は疑問符です。fetchするまでに件数が不変という前提は危ないと思います。 $array_nameKanji = array(); $sql = "SELECT nameKanji FROM member"; $rs = mysql_query($sql,$conn); while ($rec = mysql_fetch_assoc($rs)) { $array_nameKanji[] = '"' . $rec["nameKanji"] . '"'; } $totalMember = count($array_nameKanji); とすべきでしょう。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

アドバイスありがとうございます。 もう少しかんがえて、あらためて質問させていただきます。

その他の回答 (3)

  • 回答No.4
  • memphis
  • ベストアンサー率40% (975/2395)

DBのレコードが既に文字に「”」が付けてませんか? phpMyAdmin などを使ってDBを確認して下さい。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

別のところに原因がある気がしてます。 ありがとうございます。 原因不明ですね。 もう少しかんがえて、あらためて質問させていただきます。

  • 回答No.2
  • t_ohta
  • ベストアンサー率38% (4625/11945)

"\"" じゃなくて '"' とシングルクォートでダブルクォートを囲むんじゃダメですか。

共感・感謝の気持ちを伝えよう!

質問者からのお礼

やってみたのですが、うまくいきませんでした。 ありがとうございます。 原因不明ですね。 もう少しかんがえて、あらためて質問させていただきます。

  • 回答No.1
  • shimix
  • ベストアンサー率54% (865/1590)

>$array_nameKanji[$i] = "\"" . $rec["nameKanji"] . "\""; >こうしてみると、 >{"""田中""","""斉藤""","""鈴木"""} >となってしまいます。 ちょっと考えられません。下記ソースで試しましたが、そういう現象は再現出来ませんでした。 <?php $rec = array( array('id'=>1, 'nameKanji'=>'田中'), array('id'=>2, 'nameKanji'=>'斉藤'), array('id'=>3, 'nameKanji'=>'鈴木'), ); $array_nameKanji = array(); foreach ($rec as $key=>$val) { $array_nameKanji[] = "\"" . $val['nameKanji'] . "\""; } print_r($array_nameKanji);

共感・感謝の気持ちを伝えよう!

質問者からのお礼

ありがとうございます。 原因不明ですね。 もう少しかんがえて、あらためて質問させていただきます。

関連するQ&A

  • 構文の省略について

    下記をもっと省略(短い構文で)して書きたいのですが、どのようなやり方があるでしょうか。 testというテーブルから指定したidのnameを取り出して並べたいだけなのですが、このような長々としたものしか思い浮かびませんでした。 <?php $n1 = 1; $n2 = 2; $n3 = 3; $rs1 = mysql_query("select * from test where id = '$n1';",$conn); $rec1 = mysql_fetch_array($rs1, MYSQL_ASSOC); echo $rec1['name']; echo <br>; $rs2 = mysql_query("select * from test where id = '$n2';"); $rec2 = mysql_fetch_array($rs2, MYSQL_ASSOC); echo $rec2['name']; echo <br>; $rs3 = mysql_query("select * from test where id = '$n3';"); $rec3 = mysql_fetch_array($rs3, MYSQL_ASSOC); echo $rec3['name']; mysql_free_result($rs1); mysql_free_result($rs2); mysql_free_result($rs3); mysql_close($conn); ?>

    • ベストアンサー
    • PHP
  • phpとmysqlでデータの一覧表示をしたいと思っています。

    phpとmysqlでデータの一覧表示をしたいと思っています。 ずらーっと並べるだけでなく、1ページに100件した場合には 10行毎に<hr>や<br>などのタグを挿入して間隔を空けたいのですが どのようにしたらいいのか悩んでいます。 現在は下記のようにLIMITで何度もqueryを発行しています。 できれば1回のqueryで処理したいのですが 他にどのような方法があるでしょうか。 $rs = mysql_query("select * from data order by id desc LIMIT 0,10 ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $site = $rec['site']; $url = $rec['url']; echo '<a href="'.$url.'">'.$site.'</a>'; } $rs = mysql_query("select * from data order by id desc LIMIT 10,10 ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $site = $rec['site']; $url = $rec['url']; echo '<a href="'.$url.'">'.$site.'</a>'; } $rs = mysql_query("select * from data order by id desc LIMIT 20,10 ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $site = $rec['site']; $url = $rec['url']; echo '<a href="'.$url.'">'.$site.'</a>'; } よろしくお願い致します。

    • ベストアンサー
    • MySQL
  • 配列に値が入らない

    PHP初心者です。 <?php $sql = sprintf('SELECT * FROM image WHERE img_url="%s"', mysql_real_escape_string('img_url') ); $record = mysql_query($sql)or die(mysql_error()); while($data = mysql_fetch_assoc($record)) { $image = array($data['img_url']); } ?> これで $image にはデータベースの img_url のフィールドの値がすべて代入されるはずだったのですが なぜか配列には何も値が入りません。 何が悪いのか、配列についていろいろ調べてはみたのですが、どうしてもわかりませんでした。 どうやったら値が入るようになるか、教えていただけないでしょうか? よろしくお願いします。

    • 締切済み
    • PHP
  • 配列の要素でmysqlに問い合わせ

    フォームから送信されたデータを配列として取得し、その配列の1つの要素に対してそれぞれmysqlにselectで問い合わせてageというカラムの値を取得したいと思っています。 配列の要素の数がその都度変わるので、要素が5つある場合には5回selectでデータベースに問い合わせてデータを5つ取得したいのですが、それは可能でしょうか? ためしに下記のようにしてみたのですが、うまく取得できませんでした。 $hairetu = $_POST; for($i=0; $i< count($hairetu) ; $i++){ $sql = "SELECT * FROM member where age = '$hairetu[i]';"; $res = mysql_query($sql, $conn) or die("エラー"); $row = mysql_fetch_array($res, MYSQL_ASSOC); $age = $row["age"]; echo $age; } $ageの値をcount($hairetu)の回数分表示したいのですが、どのように処理していいのか分かりません。 また、根本的におかしな点もあると思いますがよろしくお願いします。

    • ベストアンサー
    • MySQL
  • SQL文の実行結果を変数で受けて、それを連想配列に格納したいです。

    SQL文の実行結果を変数で受けて、それを連想配列に格納したいです。 (カラム名を連想配列のキーにします。) また、値をHTMLエスケープ処理したいと考えています。 下記のソースを書いてみましたが、配列$all[]にうまく入りません。 $qresult = mysql_query($qstring); $all = array(); while (list ($key, $val) = mysql_fetch_assoc($qresult)){  $all[$key] = htmlentities($val, ENT_QUOTES,EUCJP); } また、3行目をeach(mysql_fetch_assoc($qresult))に変更してもみましたが、 「Variable passed to each() is not an array or object」エラーが出ます。 mysql_fetch_assocの戻り値は連想配列では無いのでしょうか。 $qresult = mysql_query($qstring); $all = array(); while ($rec = mysql_fetch_assoc($result)){  $all[] = $rec; } 上記だと問題なく取得出来るのですが。。。 何が悪いのでしょうか。

    • ベストアンサー
    • PHP
  • WHILEで取り出しループ中にさらにSQL文を入れたいです。

    こんばんは。 いつもお世話になっております。 またはまってしまったみたいで、どうにもわからなく なってしまいました。 どうかご指導よろしくお願いいたします。 使用環境はPHP5+Apche+MySQL4.0です。 2つのテーブルから【一覧リスト】というページを作って mysq_fetch_array関数で、行をループで呼び出しました。 ここまでは出来たのですが、取り出したキー情報を もとに、別テーブルの情報(文字列)を取り出したい のです。 以下、試してみたコードです。 //SQL発行 $rs = mysql_query("select * from uriage", $conn); //1件ずつ取り出すループ while( $rec = mysql_fetch_array( $rs, MYSQL_ASSOC)){ echo "<tr>"; echo "<td>".$rec['oder_no']."</td>"; $sql = "(select*from syouhin where syouhin_id = '".$rec["syouhin_id"]."')"; $res = mysql_query($sql); $rows = mysql_fetch_array($res); echo $rows["syouhin_name"]; echo "<td>".$rec['siiresaki']."</td>"; echo "<td>".$rec['tanka']."</td>"; echo "</tr>"; } Parse error: syntax error, unexpected T_ECHO というエラーが返ってきています。 エラーの行数はecho $rows["syouhin_name"]; の部分です。 何が悪いのかすら判らなくて…。 どうか、ご指導よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • select構文について

    テーブルを結合して各カラムを出力したいのですが、両方のテーブルに同じカラム名があった場合どのように処理したら言いのでしょうか? 次のようにやってみたのですが、テーブル名をASで置き換えるとうまくいかないのでしょうか。 $rs = mysql_query("select u.name,a.name, from user AS u LEFT JOIN address AS a ON u.id=a.id ;",$conn); while($rec = mysql_fetch_array($rs, MYSQL_ASSOC)){ $username = $rec['u.name']; $officename = $rec['a.name']; echo '$username'; echo '$officename';

    • ベストアンサー
    • MySQL
  • PHPで空の値を表示させたくない場合

    PHPでデータベースから値を取り出し 出力させるというスプリクトを作成してるのですが どうしても、入力フォームに空を値を 入れても空の値まで出力されてしまいます こういう場合はどうやって空の値を 弾くコードを書けばいいのか教えて もらえないでしょうか? ちなみに自分が書いたコードはこれです <?php $conn=mysql_connect("localhost", "username", "pass"); if (!$conn) { die('接続失敗です。'.mysql_error()); } mysql_select_db("database", $conn); mysql_query("SET NAMES 'ja-utf8'", $conn); mysql_query("INSERT INTO tablename (caram) VALUES ('$title_a')", $conn); $sql='SELECT title FROM tablename'; $rs=mysql_query($sql, $conn); $res=mysql_fetch_assoc($rs); if (isset($res)) { while ($res=mysql_fetch_assoc($rs)) { echo "<br>"; echo htmlspecialchars($res["caram"], ENT_QUOTES); } } else { echo ""; } mysql_close($conn); ?> どなたかよろしくお願いします。

    • ベストアンサー
    • PHP
  • 連想配列と添字配列の違いについて

    MySQL初心者です。 mysql_fetch_arrayとmysql_fetch_assocの違いがいまいち理解できません。 ネットで調べると mysql_fetch_array — 連想配列、添字配列、またはその両方として結果の行を取得する mysql_fetch_assoc — 連想配列として結果の行を取得する と書かれていますが、連想配列と添字配列の違いが理解できませんでした。 全くの初心者でもわかるようにそれぞれの違いを教えていただけませんか? よろしくお願いします。

    • ベストアンサー
    • MySQL
  • selectであるデータを検索した結果のリターンコードを取得するには?

    以下のようなコードをPHP内で実行しています。 以下の例は、MySQLテーブル'test_tbl'の'id'というフィールド内に'500'というデータが存在した場合、そのデータを取り出してecho文で表示させるようにしたものです。 検索した結果データが存在しなかった場合、データが存在していないということを、リターンコードで判断したいと思っています。 リターンコードはどうやって見ることができますか? '$rs'にリターンコードが入ってくるのでしょうか? ('Resource id #3'のような値が返ってくるようですが) リターンコードとその意味の一覧とかが、どこかのサイトにあればURLを教えていただければ助かります。 よろしくお願い致します。 ------------------------------------------------ <?php  if( ! $conn = mysql_connect( 'localhost', 'user_id', 'password') ){   die( 'MySQL接続失敗' );  }  mysql_select_db( 'test_db', $conn );  $rs = mysql_query("SELECT id FROM test_tbl WHERE id = 500", $conn);  $rec = mysql_fetch_array( $rs, MYSQL_ASSOC );  echo $rec['id'];  mysql_free_result( $rs );  mysql_close($conn); ?>