mysqlのデータを変数に代入する方法

このQ&Aのポイント
  • php/mysql初心者が、データベースから取得した情報を変数に代入し、POSTメソッドで送信したいです。
  • 具体的には、SELECT文で特定の情報を取り出し、変数に代入し、それをPOSTリクエストのデータとして送信したいと考えています。
  • しかし、実際には代入した値が「Resource data」となり、意図した値が送信されません。なぜそのような結果になるか理解できません。
回答を見る
  • ベストアンサー

mysqlのデータを変数に代入する方法

php/mysql初心者です。かなりつたない内容になっているかもしれませんが、ご容赦ください。 過去ログで何のワードで検索したらいいかもわからなかったので質問投稿させていただきます。 データベースに入っている情報を変数に代入して POSTメソッドで送信したいと考えています。 DBからSELECTで特定の情報を取り出す ↓ 変数に代入する ↓ POSTで送信 このような流れで処理したいです。 [環境] PHP 5.2.17 MySQL 5.1.59 今書いているソースを一部抜粋します。 ------------ <?php if ($_SERVER['REQUEST_METHOD']=="POST") { require_once "Request.php"; $req =& new HTTP_Request("【送信先URL】"); $req->setMethod(HTTP_REQUEST_METHOD_POST); $connect = mysql_connect('localhost', '【DB名】', '【パスワード】'); if (!$con) { exit('データベースに接続できませんでした。'); } $result = mysql_select_db('【データベース名】', $connect); if (!$result) { exit('データベースを選択できませんでした。'); } $db = mysql_query('SELECT username FROM userinfo where id=6', $connect); $u="$db"; $req->addPostData("username", $u); $con = mysql_close($con); if (!$con) { exit('データベースとの接続を閉じられませんでした。'); } ?> ------------ ※idが6のusernameは「テスト太郎」になっています。 上記のPHPを実行すれば"userinfo"テーブル内の"id"が6の"username"が 送信されると思いましたが、実際は異なる内容が送信されます。 送信されるデータはusernameの内容ではなく "Resource data"となっています。 なぜ$uに代入した値がResource dataという内容になるのでしょうか。 初歩的な質問かもしれませんが、 ご教示の程よろしくお願いいたします。

  • MySQL
  • 回答数2
  • ありがとう数3

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

  • ベストアンサー
  • LancerVII
  • ベストアンサー率51% (1060/2054)
回答No.1

こんにちは。 $u = "$db"; が実行された場合、$dbの中身が入ります。 $dbは結果のリソースが入っているのでそこから実際取得されたデータを取ってあげなければいけません。 $r = mysql_fetch_array($db); こうすると配列が返ります。 $req->addPostData("username",$r['username'] ); とすることでSelectしたusernameがデータとして送信されるはずです。

midorinodonchan
質問者

お礼

早速の回答ありがとうございました。 上記方法でうまくいきました。本当に助かりました。 今後ともよろしくお願いします。

その他の回答 (1)

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

$u にはSELECT文を実行した結果のリソースデータが入っているから"Resource data"と表示されます。 データを取り出すためにはフェッチしてからその中身を見ないとだめです。 $db = mysql_query('SELECT username FROM userinfo where id=6', $connect); $row = mysql_fetch_assoc($db); $u = $row['username'];

midorinodonchan
質問者

お礼

回答ありがとうございました。 上記方法でうまくいきました。 根本が間違っていましたね・・・ 今後ともよろしくお願いいたします。

関連するQ&A

  • mysqlで変数を使う方法

    SQL文にPHPの変数のように変動する値を指定することはできますでしょうか。 データベースから特定のレコードを拾ってきて PHPのPOSTメソッドでその値を送信するシステムを作ろうとしています。 具体的には、データベースに名簿(IDと名前だけの簡単なものです)を 予め作っておき、送信ボタンをクリックしたユーザーのIDと紐付いている 名前を送信したいと考えています。 [MySQL] table:meibo id | name ------------ 1 | itou 2 | yamada 3 | suzuki [PHPソース](一部抜粋) ------------ $sql = mysql_query('SELECT * FROM meibo where id=【ここを変動させたい】', $connect); $sql = mysql_fetch_array($sql); $req->addPostData("user_name", $sql['name']); ------------ $idに操作しているユーザーのIDが代入されているとして 以下のようにmysql_queryの中で実行しているSELECT文に$idを利用することは可能でしょうか。 SELECT * FROM meibo where id=$id もし上記のような方法が無理な場合、 代替案をご提案いただけると非常に助かります。 読みにくい文章で恐縮ですが、 どうかお助けください。 よろしくお願いします。

    • ベストアンサー
    • MySQL
  • 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を学習しているのですが・・・。

    ----------------- apache2.0.59 php5.24 MySQL5.0.45 ----------------- <?php $my_con = mysql_connect("localhost" , "hamu" , 'hamutamago'); if($my_con == false){ echo "MySQLに接続できました"; }else{ echo "MySQLに接続できました"; }; if(mysql_select_db("sample_sql")){ echo "データベース接続できました"; }else{ echo "データベース接続できませんでした"; } ?> PHPでMySQLと連動させる勉強をいましているのですが、PHPからMySQLへアクセスする事はできたのですが、自分で作成したデータベースへアクセすることができません。最初からMySQLに入っていたinformation_schemaというデータベース(?)にはアクセスできるみたいなのですが、自分で策瀬下データベースにはアクセスが出来ないようです。 なにかご存じのかたがいらっしゃいましたらよろしくお願いします。

    • ベストアンサー
    • PHP
  • FORMからPHP処理  

    こんにちわ ある参考書をみながらスクリプトを打ち込んでいるのですがFORM(touroku.html)で登録ボタンを押すと(touroku.php)にpostで送信されデータベース処理をした結果(登録完了)と表示されるはずなのですが何も表示されません。参考書ではhttp://touroku.htmlからhttp://touroku.phpに移動しているのですけど自分のはC:\www\touroku.htmlからC:\www\touroku.phpに移動しています。このあたりが何か関係あるのでしょうか?サーバーはANHTTPDを使用しています。なにか設定が間違っているのでしょうか?スクリプトは以下の様です。 <html> <body> <?php if(!$con=mysql_connect("localhost,"mysql","****")){ echo"接続エラー"; exit; } if (!mysql_select_db("****",$con)){ echo"データベース選択エラー"; exit; } $sql = "insert into ****_tbl(name,age) values('$nm',$age)"; //sqlを実行 if(!$res=mysql_query($sql)){ echo "Sql実行時エラー"; exit; } mysql_close($con); echo "登録完了"; ?> </body> </html>

    • ベストアンサー
    • PHP
  • php + MySQLでデータ削除 更新

    一覧画面に更新、削除というボタンをつくり番号を受け取って削除したいのですが、削除ボタンを押しても画面は変わるのですが削除されません 助けてください 番号 int プライマリーキー 氏名 varchar 住所 varchar 一覧画面のソース <html> <head> <meta http-equiv="Content-Type" content="text/html; charset=UTF-8"> <title>一覧画面</title> </head> <body> <BLOCKQUOTE> <BR>一覧画面<BR><BR> <?php $con=mysqli_connect("localhost","root","admin","db_test"); // Check connection if (mysqli_connect_errno()) { echo "Failed to connect to MySQL: " . mysqli_connect_error(); } $result = mysqli_query($con,"SELECT * FROM tbl_test"); echo "<table border='1'> <tr> <th>番号</th> <th>氏名</th> <th>住所</th> </tr>"; while($row = mysqli_fetch_array($result)) { echo "<tr>"; echo "<td>" . $row['番号'] . "</td>"; echo "<td>" . $row['氏名'] . "</td>"; echo "<td>" . $row['住所'] . "</td>"; echo "<form action=koushin_input.php method=post>"; echo "<td><input type=submit value=更新></td>"; echo "</form>"; echo "<form action=sakujo.php method=post>"; echo "<td><input type=submit value=削除></td>"; echo "</form>"; echo "</tr>"; } echo "</table>"; mysqli_close($con); ?> <BR><BR><BR> <A HREF="http://localhost/regist.php"> <INPUT TYPE = "SUBMIT" VALUE = "新規登録"></A> </BLOCKQUOTE> </body> </html> 削除ソース  sakujo.php <html> <body> <? // データベースに接続 if(!$con=mysql_connect("localhost","root","admin")){ echo"接続エラー"; exit; } // データベースを選択 if(!mysql_select_db("db_test",$con)){ echo"データベース選択エラー"; exit; } // DELETE文を実行 $sql = "delete from tbl_test where '番号'= 番号; if(!$res=mysql_query($sql)){ echo "SQL実行時エラー"; exit; } // データベースから切断 mysql_close($con); // 登録完了メッセージの表示 echo "削除完了"; ?> </body> </ht

    • 締切済み
    • PHP
  • MySQLとPHP(HTML)の連携について

    送信側では、PHP(HTML)下記のように書きました。 ----------------------------- <form action="input.php" method="post"> ボタン1:<input type="submit" name="input" value="入力">   ボタン2:<input type="submit" name="input2" value="入力"> </form> ----------------------------- 受信側(input.php)は下記のように書きました。 ----------------------------- <?php $url = "***.sakura.ne.jp"; $user = "abc"; $pass = "12345"; $db = "sakura_db"; if (isset($_POST["$input"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN"; }elseif (isset($_POST["$input2"])){ $sql = "SELECT SQL_CALC_FOUND_ROWS * FROM MAIN2"; } //Connect MySQL Server $my_Con = mysql_connect($url,$user,$pass); mysql_query("SET NAMES utf8",$my_Con); if ($my_Con == false){ die("MySQL Server接続に失敗しました。"); } //Connect MySQL DataBase if (!mysql_select_db($db,$my_Con)){ die("MySQL DataBase選択に失敗しました。"); } //MySQL Deta Read $my_Row = mysql_query($sql,$my_Con); if (!$my_Row){ die(mysql_error()); } $a = 1; while ($row = mysql_fetch_array($my_Row) or $a <= 50) { echo ' <p>'; echo ' A'.$a.':<input name="date" type="text" size="4" value="'.$row["a"].'">'; echo ' B'.$a.':<input name="date" type="text" size="4" value="'.$row["b"].'">'; echo ' C'.$a.':<input type="checkbox" name="example"'.check($row["c"]).'>'; echo ' D'.$a.':<input type="checkbox" name="example"'.check($row["d"]).'>'; echo ' </p>'; $a++; } //Close MySQL Server $my_Con = mysql_close($my_Con); if (!$my_Con) { exit("MySQL Server閉じられませんでした。"); } ?> ----------------------------- この状態で送信側のボタンをクリックすると、input.php側では”Query was empty”とエラーがでます。 送信側の2つあるボタンによって表示されるテーブルを変えたいのですが、何が原因なのでしょうか? そもそもSQLの内容をif文での条件分岐は出来ないのでしょうか? 最近PHPを勉強し出した初心者です。 出来れば分かりやすく教えていただけないでしょうか。 よろしくお願い致します!

    • ベストアンサー
    • PHP
  • 異なるデータベース間のリレーション

    phpmyadmin上の異なるデータベース間のテーブルでリレーションをかけたいのですが、うまくいきません。 new_linkフラグをtrueにすることで異なるデータベースを開くところまではできました。 アドバイスいただけないでしょうか。 ※DB1の中にtable1が、DB2の中にtable2がある //失敗する $con1 = mysql_connect("localhost",username,pass); mysql_select_db('DB1',$con1); $con2 = mysql_connect("localhost",username,pass,true); mysql_select_db('DB2',$con2); $sql = "select * from table1,table2 where table1.id = table2.id"; $result = mysql_query($sql) or die(mysql_error()); メッセージ⇒Table 'DB2.table1' doesn't exist //これは成功する $con1 = mysql_connect("localhost",username,pass); mysql_select_db('DB1',$con1); $con2 = mysql_connect("localhost",username,pass,true); mysql_select_db('DB2',$con2); $sql1 = "select * from table1"; $result1 = mysql_query($sql,$con1) or die(mysql_error()); $sql2 = "select * from table2"; $result2 = mysql_query($sql2,$con2) or die(mysql_error());

    • ベストアンサー
    • MySQL
  • PHPでMYSQLに接続できません

    PHP(4.3.11)でMYSQL(5.0.81)に接続しようとすると接続できず、 Client does not support authentication protocol requested by server; consider upgrading MySQL client というエラーになります。 PHP文はこのように記述しています。 <?php $con = mysql_connect("localhost","root","password"); if (!$con) { print(mysql_error()); exit('データベースに接続できませんでした。'); } ?> my.cnf に old_passwords=1 を記述し、mysqlを再起動したのですが同じエラーでした。 他に設定しなければならない事があるのでしょうか?

  • phpでのsql文で変数を使う

    POSTで受け取った文字列を,テーブル名として新規テーブルを作成したいのですが,sql文発行の際の変数の記述方法がわかりません。 ネットや本に書いてある方法は一通りためしたのですが,失敗しましたとなります。 ご教授下さい。 php 5.2.3 apache2.2.4 mysql 5.0.45 <?php require_once("../dbini.php"); $con = mysql_connect($DBSERVER, $DBUSER, $DBPASS); $selectdb = mysql_select_db($DBNAME, $con); $name = $_POST['name']; $sql = "create table $name ( qno int(3), qcontents text(500))"; $rst = mysql_query($sql,$con); if($rst){ echo $name . "を作成しました。"; }else{ echo "データベースの作成に失敗しました。"; } ?>

    • ベストアンサー
    • PHP
  • チェックボックス検索システム

    <?PHP $con = mysql_connect('******.jp', '*********', '******'); if (!$con) { exit('データベースに接続できませんでした。'); } $result = mysql_select_db('******', $con); if (!$result) { exit('データベースを選択できませんでした。'); } $result = mysql_query('SET NAMES utf8', $con); if (!$result) { exit('文字コードを指定できませんでした。'); } $arr1 = array(); foreach($_POST['tiiki'] as $tiiki){ $arr1[] = " tiiki = '$tiiki' "; } $arr2 = array(); foreach($_POST['syoku'] as $syoku){ $arr2[] = " syoku = '$syoku' "; } $arr3 = array(); foreach($_POST['koyou'] as $koyou){ $arr3[] = " koyou = '$koyou' "; } $a = implode(" OR ",$arr1); $b = implode(" OR ",$arr2); $c = implode(" OR ",$arr3); $sql = "select * from kensaku where ($a) AND ($b)AND ($c) order by date desc"; print $sql; ?> <?php $con = mysql_connect('*****.jp', '******', '******'); if (!$con) { exit('データベースに接続できませんでした。'); } $result = mysql_select_db('*******', $con); if (!$result) { exit('データベースを選択できませんでした。'); } $result = mysql_query('SET NAMES utf8', $con); if (!$result) { exit('文字コードを指定できませんでした。'); } $result = mysql_query('SELECT * FROM kensaku', $con); while ($data = mysql_fetch_array($result)) { echo '<p>' . $data['tiiki'] . ':' . $data['syoku'] . ':' . $data['koyou'] . ':' . $data['kai'] . "</p>\n"; } $con = mysql_close($con); if (!$con) { exit('データベースとの接続を閉じられませんでした。'); } ?> これで表示されるのが、 select * from kensaku where ( tiiki = '豊岡市' ) AND ( syoku = '飲食' )AND ( koyou = 'バイト' ) order by date desc 豊岡市:飲食:バイト:オシイそば 豊岡市:製造:正社員:オシイ運輸 養父市:飲食:バイト:オシイ物産 です。一番目のphpデータはPOST文を受け取っただけでデータベース内から検索してくれないし、二番目のphpデータはデータべスにある情報を全て受け取っただけです。 僕はチェックされた情報をPOSTで受け取り、チェックされた内容に該当するデータだけデータベースから受け取り表示させたいんですが、どうすればいいですか?

    • ベストアンサー
    • PHP