MySQLのクエリーで受け取った結果を文字列として処理する方法

このQ&Aのポイント
  • MySQLのクエリーで受け取った結果を文字列として処理したい場合、以下のような方法があります。
  • 1. mysqli_fetch_array関数を使用して、クエリー結果の値を取得し、文字列として処理する。
  • 2. mysqli_data_seek関数を使用して、クエリー結果のポインタを移動させ、結果を文字列として処理する。
回答を見る
  • ベストアンサー

MySQL のクエリーについて

次のようなコードでMySQLから受け取った結果を文字列として処理したいのですが、この結果は文字列ではないようです。 MySQL関係の文を下にコピーしてます。 $cxn=mysqli_connect("localhost","root","phpscript1682") or exit("failed to connect to MySQL"); $db=mysqli_select_db($cxn,karaoke) or die("failed to open karaoke database"); $source_table="originalpath"; $destnation_table="num2song"; $idnum=1; while ($idnum<10){ $jobrequest="select songpath from $source_table where id=$idnum"; $result=mysqli_query( $cxn, $jobrequest) or die("fail to get job done"); ..... ..... $idnum++; } // end while $jobrequest にある songpath というのは originalpath というテーブルの中のフィールドで、文字列です。それを要求してクエリーを実行したので $result の中身はsongpath の値の文字列だと思ったのですが、そうではないようです。 これを文字列として扱えるように変換する関数などあるのでしょうか? 詳しい方、どうぞ教えてください。お願いします。

  • MySQL
  • 回答数1
  • ありがとう数1

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

  • ベストアンサー
  • t_ohta
  • ベストアンサー率38% (5061/13226)
回答No.1

mysqli_query() の戻り値は mysqli_result クラスのオブジェクトです。 なので、mysqli_fetch_all() とか mysqli_fetch_assoc() を使ってSQLの実行結果を配列で受け取ってから処理する必要があります。 http://php.net/manual/ja/class.mysqli-result.php

papashiroSooke
質問者

お礼

早速にご回答いただき、有難うございます。 自分でもよく調べてみてmysqli_fetch_assoc() を使って、フィールド名をキーにした連想配列で取り出せるとわかりました。勉強になりました。

関連するQ&A

  • PHPからMySQL・異なるDBにコピー

    PHPからMySQL・異なるDBに接続し同じ構造のテーブルのデータをコピーすることは可能ですか? 以下を実行するとクエリが実行されず「コピーできません」が表示されてしまいます。 どのようにすればコピーできるか教えてください。 $connect1 = mysql_connect("localhost", "user1", "pass1") ; mysql_select_db("db1", $connect1); //db1内にtable1 $connect2 = mysql_connect("localhost", "user2", "pass2") ; mysql_select_db("db2", $connect2); //db2.内にtable2 $sql = "INSERT INTO `db1` . `table1` SELECT * FROM `db2` .`table2`;"; $result = mysql_query($sql, $connect1)or die("コピーできません"); //$result内「$connect1」でも「$connect2」結果は同じです。 //table1とtable2の構造は同じです。

    • ベストアンサー
    • PHP
  • 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_queryが動かなくて困っています

    こんにちは、Web上のphpのページを見ながら学習している者です。 早速躓いてしまっていまして、どなたか添削していただければと思います。 下のようなスクリプトを組んだのですが、接続は成功するのですが 問い合わせのほうがうまくいかず、クエリの送信に失敗しました。になります mysql_query文の各パラメーターはphpMyAdminの画面からカットアンドペーストしたもので、タイプミスや大文字小文字のミスは無いはずなのですが… どうかよろしくお願いします >><?php >>   $url = "11111.jp"; >>   $user = "+++++"; >>   $pass = "*****"; >>   $db = "dbname"; >>   // データベースへ接続("サーバ名","ユーザ名","接続用パスワード") >>   $link = mysql_connect($url,$user,$pass)or die("MySQLへの接続に失敗しました。"); >>   $sdb = mysql_select_db($db)or die("データベースの選択に失敗しました。"); >>   // 問合せ処理 >>   $query = "select 名称 from tablename where ID=1"; >>   $result = mysql_query($query)or die("クエリの送信に失敗しました。<br />SQL:".$sql);

    • ベストアンサー
    • PHP
  • MySQL のエラーメッセージ

    Windows10上でApacheサーバーとMySQLを使ってプログラムを作っています。 HTML文書からPHPスクリプトを読んでいるのですが以下のメッセージが出てきます。 Parse error: syntax error, unexpected $end in C:\xampp\htdocs\karaoke_project\karaoke_data_conversion.php on line 96 この96行目というのは実は何もなくて、サクラエディターを使っているので黒抜きの[EOF] というのが出ているだけです。文書の最後にいつも出ているやつです。 他の簡単なHTMLからPHPの呼び出しができることは確認済みです。 スクリプトを何度も読み返してみましたが、何が悪いのか全く見当がつきません。 詳しい方がいらっしゃいましたら、ぜひ教えてください。 お願いいたします。 下に、HTML文書とPHPスクリプトをコピーしてあります。 HTML: <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title> form sample</title> </head> <body> sample for to connect to MySQL</br> Input the song number.</br> <form method="post" action="karaoke_data_conversion.php"> <input type="text" name="tx"></br></br> <input type="submit" name="sb" value="press to start MySQL"> </form> </body> </html> PHP: <!doctype html public "-//W3C//DTD HTML 4.0 Transitional//EN" "http://www.w3.org/TR/REC-html40/loose.dtd"> <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=utf-8"> <title> karaoke_data_conversion.php</title> </head> <body> <h1> start PHP program using MySQL</h1></br> <?php $TX=htmlspecialchars($_POST['tx']); echo "sent data is :"."\"".$TX."\""; //======================================== // path and name: C:\xampp\htdocs\karaoke_project\karaoke_data_conversion.php // php script to convert original song path data into song number and songfullpath //========================================= $cxn=mysqli_connect("localhost","root","phpscript1682") or exit("failed to connect to MySQL"); echo "connected to MySQL </br>"; mysqli_select_db(karaoke) or die("failed to open karaoke database"); echo "opened database karaoke</br>"; $source_table="originalpath"; // original database table $destnation_table="num2song"; // new table with song number and song path separated $number="";// extracted song number $path=""; // extracted song path $bango=array("","","","","","","",""); $moji=""; $start=0; $idnum=1; while ($idnum<10){ // get the original path data from database table $jobrequest="select songpath from "."\"".$source_table."\""." where id=$idnum"; // integer variable does not need "" to enclose $result=mysqli_query($cxn, $jobrequest) or die("fail to get job done"); // extract song number and song path here // and assign them to $number and $path $length=mb_strlen($result,'UTF-8'); // get the length of the original path echo "length of the path is ".$length; for ($i=$length-5; $i>0; $i--) {// ignore ".avi" part $moji=mb_substr($result,$i,1,'UTF-8'); if ($moji="\\"){ $start=$i+1; break; } for ($i=$start;$i<$length-5; $i++){ $moji=mb_substr($result,$i,1,"UTF-8"); if ($moji==" " || $moji==" "){ break; } if (($moji >="0" && $moji <="9") || $moji=="\\"){ $bango[$i-$start]=$moji; } } $number=""; $i=0; while( $bango[$i]!=""){ $number .= $bango[$i]; $i++; } $number .="\0"; // write the separated data into destination_table $jobrequest="insert into "."\"".$destination_table."\""." (songnum, songfullpath)"; $jobrequest .=" values ("."\"".$number."\"".","."\"". $path."\"".")"; // variable values must be enclosed by "" // $jobrequest itslf must be enclosed by "" as well mysqli_query($jobrequest) or die("cannot add data to the table"); echo "new data added"; $idnum++; // next data // reset bango array (8 elements) to null for($i=0; $i<8; $i++){ $bango[$i]=""; } } // end while echo "data conversion is complete</br>"; mysqli_close($cxn); ?> </body> </html> ちなみに、この</html> が95行目で、この下に[EOF] と出ています。

    • ベストアンサー
    • MySQL
  • phpとmysqlが連携できない

    問題のコードです。 何度やっても失敗と表示されます。 接続は問題ないと思います。 お願いします。 $db = mysql_connect("localhost", "user", "user_パスワード", "db1") or die("Connection error"); $query = "select * from menbers"; $result = mysql_query($query, $db); if($result){ echo "成功"; }else{ echo "失敗"; }

  • MySQL insertができない

    商品名とその値段を挿入しようとおもっているのですが、下記のようなエラーがでて先に進めずにいます。 Query failed: Unknown column 'item' in 'field list' <?php if($contact=mysql_connect("host","admin","root")){ echo "サーバに接続しました。<br>"; } mysql_select_db("watanabe", $contact); $query = 'INSERT INTO list(item,price) VALUES("りんご","100")'; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); if($result){ echo"追加に成功しました。"; }else{ echo"追加に失敗しました。"; } ?> ご回答願えますでしょうか?

    • ベストアンサー
    • PHP
  • mysql_queryでDB検索をしたいが、結果が表示できない

    MYSQL関数の練習で、以下のソースを実行しました。selectDBなどの部分は省いております。 $sql_keyword = ereg_replace("[[:blank:]]+","%\" and name LIKE \"%",trim($word)); $sql = "SELECT * FROM shop where name LIKE \"%$sql_keyword%\""; $result = mysql_query($sql) or die('Query failed: ' . mysql_error()); echo "<table>\n"; while ($line = mysql_fetch_array($result, MYSQL_ASSOC)) { echo "\t<tr>\n"; foreach ($line as $col_value) { echo convert("\t\t<td>$col_value</td>\n"); } echo "\t</tr>\n"; } echo "</table>\n"; mysql_free_result($result); で行うも、エラーなども無く、結果がブランクになってしまいます。 検索する文字列($WORD)に該当するレコードは複数存在します。 エラーなどもないため、原因がわかりません。皆様のお力をお借りできればと存じます。よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • mysql_fetch_objectの書き方を教えて下さい。

    PHP5.1.6を使用しています。 次のスクリプトを書きましたが、データが取得できません。 $conn_id = mysql_connect("localhost","***","***") or die('Error connecting to MySQL'); mysql_select_db('***',$conn_id); $query ="SELECT abcd,efgh from XYZ where name='taro'"; $result = mysql_query($query,$conn_id) or die($query.'failed('.mysql_error().')'); $ydata = array(); $xdata = array(); while($row = mysql_fetch_array($result)){  ← 11行目 array_push($ydata, $row->efgh);   ← 12行目 array_push($xdata, $row->abcd);   ← 13行目 } エラーログを見ると、 PHP Notice: Trying to get property of non-object in /***/***/****.php on line 12 PHP Notice: Trying to get property of non-object in /***/***/****.php on line 13 となっています。 var_dump($row) 句を入れ、ブラウザから見ると、当然ながら(?)bool(false) と表示されます。 11行目の mysql_fetch_array を mysql_fetch_object に入れ換えて while($row = mysql_fetch_object($result)){ としても結果は変わりません。 リファレンスマニュアルやサンプルを参照して種々手直ししましたが、今ひとつ正解に辿り着けません。 データを取得して配列に入れるには、どのように修正すれば良いか、教えて頂けませんでしょうか。

    • ベストアンサー
    • PHP
  • MySQL UPDATEができない

    PHP+MySQLをやり始めて、テーブルのUPDATE(更新)ができなくてこまっています。 <?php if($contact=mysql_connect("host","admin","test")){ echo "サーバに接続しました"; } mysql_select_db("databesetest", $contact); $query = "UPDATE list SET name = color WHERE id = 2"; $result = mysql_query($query) or die('Query failed: ' . mysql_error()); if($result){ echo"更新に成功しました"; }else{ echo"更新に失敗しました"; } ?> とすると Query failed: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ' SET name = color WHERE id = 2' at line 1 というエラーが出るのです。 シングルコーテーションがダブルコーテーションの問題のような気がしたので、いろいろと変更してみたのですが。できませんでした。 お教え願えませんでしょうか?

    • ベストアンサー
    • PHP
  • MySQLのテーブルのコラム名の取得方法

    MySQLのテーブルを一つのオブジェクトと考えるようなクラスを作ろうとしています。 このクラスの中で、テーブルの各コラム(またはフィールド名)を要素にした配列を作りたいのですが、やり方がわかりません。 自分がある程度調べてみたところでは、MySQLシェルの中では、次のように入力すると添付した画面のようにコラム名の一覧が表示がされるのですが これらのコラム名をPHPスクリプト内にある配列に格納出来ません。 mysql> SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME="transaction"; まだ作成の途中ですが、自分のスクリプトは以下に掲載したようなものです // columnList initialize というブロックが該当部分です。ほかの部分はとりあえず働いてます。 どなたかお知恵を貸していただけないでしょうか。お願いいたします。 <?php class Table{ private $DBname; private $tableName; private $columnList=array(); private $dataArray=array(array()); private $totalRecords; //=================================================== public function __construct($database, $tablename) //=================================================== { $this->DBname=$database; $this->tableName=$tablename; $cxn=mysqli_connect("localhost","root","rsi2018","$database") or die("cannot connect to database"); // $columnList initialize $query="SELECT COLUMN_NAME FROM INFORMATION_SCHEMA.COLUMNS WHERE TABLE_NAME=\"$tablename\""; $result=mysqli_query($cxn, $query) or die("query failed :1"); $row=mysqli_fetch_array($result); foreach($row as $col){ $this->columnList[]=$col; } // $totalRecords initialize $query="select count(*) as count from $tablename"; $result=mysqli_query($cxn, $query) or die("query failed :3"); $row=mysqli_fetch_array($result); $this->totalRecords=$row["count"]; // $dataArray initialize for($i=0; $i < $this->totalRecords; $i++){ $query="select * from $tablename where id=($i+1)"; $result=mysqli_query($cxn, $query) or die("query failed :2"); $this->dataArray[$i]=mysqli_fetch_assoc($result); } }// end constructor //=================================================== public function showPart($id) //=================================================== { $data=$this->dataArray[$id - 1]; /* foreach($data as $key=>$value){ echo "$key = $value</br>"; } */ echo "ID: ".$data['id']."</br>"; echo "partNumber: ".$data['partNumber']."</br>"; echo "partName: ".$data['partName']."</br>"; echo "simpleName: ".$data['simpleName']."</br>"; echo "stock: ".$data['stock']."</br>"; echo "location: ".$data['location']."</br>"; }// end function //=================================================== public function getTotalRecords() //=================================================== { return $this->totalRecords; }// end function //=================================================== public function showColumnList() //=================================================== { foreach($this->columnList as $field){ echo "$field "; } echo "</br>"; }// end function }// end class ?>

    • ベストアンサー
    • PHP