• 締切済み

mysql_queryの戻り値

$return_obj = mysql_query($sql); mysql_query()が正常にSQL文が行われた場合、if(true){}にしたいのですが、 どのようにすればよいですか? return値を↓のようにしても、かならずしもtrueにはならないと聞いたのですがどうなんでしょうか? if($return_obj){} 宜しくお願いします。

  • amd64
  • お礼率0% (0/42)
  • MySQL
  • 回答数1
  • ありがとう数5

みんなの回答

  • yambejp
  • ベストアンサー率51% (3827/7415)
回答No.1

まずはマニュアル確認しましょうよ http://www.php.net/manual/ja/function.mysql-query.php 戻り値は成功したときにはリソースを返し、失敗したらfalseですね 基本的にクエリーの実行エラーの場合はdie(exit)してしまうのが 妥当なので、あまりif($return_obj)を使う場合はないとおもいますよ

関連するQ&A

  • mysql_queryがある場所について

    ZendFramework-1.11.7を使用しています。 Zend_DbでPdo_Mysqlで接続して利用しています。 そこで、クエリを実際に実行している箇所を探しているのですが、 ソースの中にmysql_queryが見つからないのです・・・ PHPとかでSQLを発行したい場合にはmysql_queryでやるんですよね?? ┬ Zend │└ Db │ ├ Statement.php ファイルには public function execute(array $params = null) { /* * Simple case - no query profiler to manage. */ if ($this->_queryId === null) { return $this->_execute($params); } があるのですが、これは $this->_execute($params); を実行していて ┬ Zend │└ Db │ ├ Statement │ │ ├ Pdo.php ファイルには public function _execute(array $params = null) { try { if ($params !== null) { return $this->_stmt->execute($params); } else { return $this->_stmt->execute(); } があるのですが、これは $this->_stmt->execute(); を実行しているようなのです。 なんか行ったり来たり(^^;)していて最終的にどこでSQLを発行(mysql_queryを実行)しているのかが フォルダ全体を文字列検索しても見つからないのです・・・ _stmtが何のオブジェクトなのかが定かではないので、追跡しづらいのかもしれませんが、 どこでSQLを発行しているのか教えて頂けないでしょうか?

    • ベストアンサー
    • PHP
  • PHPのmysql_queryの変数について

    PHPのmysql_queryの変数について 全くの初心者です。 ログイン情報のチェックに使うクラスを調べているのですが、 mysql_queryの結果が表示されなく、原因が分かりません。 ご存知の方がおられましたら、ご教授頂けませんでしょうか。 よろしくお願い致します。 以下が全体のコードです。(1)(2)の問題があります。 <?php require_once "BaseDB.class.php"; // ログインをするクラス class Settings extends BaseDB { // ユーザ認証 public function isValidUser( $id, $pass ) { //var $qstring; // SQL文 //var $qresult; // mysql_query関数の結果 //var $fresult; // mysql_fetch_arrayの結果 $this->errors = 0; // MySQLにデータがあるか調べる $qstring = "select passwd from b_settings where username='$id'"; //クエリを実行 echo "setting class:<br>"; echo "qstring:<br>"; echo "$qstring<br />";//select passwd from b_settings where username=unknown $qresult = mysql_query($qstring); echo "qresult:<br>"; ////// (1)ココが表示されない。 echo "$qresult<br>"; if(!$qresult) { echo $qresult; $this->errorm = "ユーザ名が違います。table Error";////////// (2)このエラーが出てしまいます。 $this->errors++; return false; } if(!$fresult = mysql_fetch_array($qresult)) { $this->errorm = "ユーザ名が違います。"; $this->errors++; return false; } //echo "$pass /" . $fresult['passwd'] . "<br>"; if( $pass == $fresult['passwd'] ) { //echo "$pass /" . $fresult['passwd'] . "<br>"; return true; } else { $this->errorm = "パスワードが違います。"; $this->errors++; return false; } }//関数終了 public function loadSettings( $id='' ) { $qstring = "select maintitle,subtitle,maxtopics," . "username,passwd,mailaddr from b_settings where id=1"; //クエリを実行 $qresult = mysql_query($qstring); if(!$qresult){ $this->errorm = "DB Error:[$qstring]"; $this->errors++; return false; } if(!$fresult = mysql_fetch_array($qresult)) { $this->errorm = "設定情報がありません。"; $this->errors++; return false; } $this->maintitle = $fresult['maintitle']; $this->subtitle = $fresult['subtitle']; $this->maxtopics = $fresult['maxtopics']; $this->username = $fresult['username']; $this->passwd = $fresult['passwd']; $this->mailaddr = $fresult['mailaddr']; return true; } public function saveSettings( $id='' ) { $qstring = "update b_settings set ". "maintitle = '$this->maintitle', ". "subtitle = '$this->subtitle', ". "maxtopics = '$this->maxtopics', ". "username = '$this->username', ". "passwd = '$this->passwd', ". "mailaddr = '$this->mailaddr' ". " where id=1"; //クエリを実行 $qresult = mysql_query($qstring); if(!$qresult){ $this->errorm = "DB Error:[$qstring]"; $this->errors++; return false; } return true; } // プロパティ参照 function __get( $property ) { return $this->$property; } // プロパティセット function __set( $property, $value ) { $this->$property = $value; } } //クラス終了 ?>

    • ベストアンサー
    • PHP
  • mysql_queryの処理速度が遅い

    PHP+MySQLでプログラミングをしているのですが、実行時にmysql_queryの処理に時間がかかっています。状況は以下の通りです。 ・処理時間を計測するとmysql_queryの実行に15秒程度かかっています。 ・Webminで直接同じSQL文を実行すると1秒程度で終わります。 ・SQLのコマンドは単純なUPDATEです。 ・indexは設定してあります。 ・DBに格納してあるレコード数は数100件程度です。 ・optimizeは実行してみましたが、あまり効果はありませんでした。 お聞きしたいのはWebminで実行すると1秒程度で終わるSQL文がmysql_queryで実行すると、なぜ時間がかかるのかということです。 mysql_queryで時間がかかる原因およびmysql_queryの処理時間を短縮する方法などがあれば教えてください。 よろしくお願いします。

    • ベストアンサー
    • 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
  • PHP+MySQLでrollback出来ない

    PHP5 + MySQL5環境です。 以下のようなソースでロールバックさせたいのですが、 実行後、「phpMyAdmin」というDB操作ツールで対象テーブルを見てみると データが登録されてしまっています。(ロールバック出来ていない!?) どなたか原因がお解りでしたらご教授の程宜しくお願い致します。m(_ _)m ※ソースが見難いので、画像で見やすいものを添付します。 ※尚、catch句のデバッグは「bool(true) ロールバック実行」と返ってきます。 //***メイン処理ソース***************************** $sObj = new SQL_Controller(); $res = $sObj->tran_start(); if(!$res) exit; try{ //DB登録------------------ $res1 = $sObj->Customer_mst_Insert($_SESSION['CustomerInfo']); if(!$res1) throw new Exception("Customer_mst_Insert error"); throw new Exception("★rollbackテストの為、ここでワザとthrowしてみる★"); //コミット------------------ $sObj->tran_commit(); } catch(Exception $e) { //異常時はロールバックする-- $res = $sObj->tran_rollback(); var_dump($res); echo "ロールバック実行"; } //***↑メイン処理終わり。以下クラス。***************************** class SQL_Controller extends MySQL{ } class MySQL{ function query($sql){ //クエリ実行 return mysql_query($sql); } function tran_start(){ //■トランザクション開始------ try{ $res = $this->query("set autocommit = 0"); if(!$res) throw new Exception(); $res = $this->query("begin"); if(!$res) throw new Exception(); } catch(Exception $e) { return false; } return true; } function tran_commit(){ //■コミット------ return $this->query("commit"); } function tran_rollback(){ //■ロールバック------ return $this->query("rollback"); } }

    • ベストアンサー
    • PHP
  • SQLクエリを外部から読み込む

    PHPでmysql_query関数を使ってSQLを打つ際、クエリの内容を外部ファイルから読み込むことは可能でしょうか? hoge.sqlというファイルにSQL文を書いて、その内容をmysql_queryに渡したいのですが。

    • ベストアンサー
    • PHP
  • XAMPPのMYSQLでスロークエリの出力

    WindowsXP上のXAMPPでMySQL+PHPを使用したサイト開発を行っていますが、 PHP内で実行されるSQLコマンドが正しくMYSQLへ投入されていることを確認したいと考えています。 スロークエリの機能を用いることで、MYSQLに発行されたSQLコマンドを表示できると思いますが、 XAMPPのMYSQLに対して、どのような設定を行えばよいのかわかりません。 いろいろ調べたところだと、単純にLinux上のスロークエリ設定をでは動作しないようです。 どのような設定を行えば、XAMPP上でスロークエリをファイル出力できるのでしょうか。

    • ベストアンサー
    • MySQL
  • mysql_query文字コード変換について教えてください。

    PHP+MySQLで開発を行っておりますが、次の問題でつまずいて 先に進めず困っております。 お助け下さい 環境 Server : Windows2003Server PHP : 4.4.1 MySql : 4.0 <<<<< PHPソース >>>>>>>>>>>>>>> // MySQLに接続 if (!($cn = mysql_connect("localhost","userXXX","PassXXX"))) { die('接続できませんでした: ' . mysql_error()); } // MySQLのクライアントの文字コードをsjisに設定 mysql_query("SET NAMES 'sjis'") or die("can not SET NAMES sjis"); // MySQL DB 選択 if (!(mysql_select_db("dbXXX"))) { die('データベースが見つかりません.'); } // MySQL 問い合わせ $sql = "SELECT * FROM test"; if (!($rs = mysql_query($sql))) { die('セレクトに失敗しました.');       ・       ・       ・ <<<<< PHPソース >>>>>>>>>>>>>>> 上記の環境でソースを実行すると、「can not SET NAMES sjis」の メッセージでエラーとなります。 この関数をとると処理は最後まで正常終了するのですが、 表示される漢字は、文字化けしています。 ちなみにMySQLの5.0環境で実行すると問題なく変換されて正しく 表示されます。 MySQLの4.0環境では mysql_query("SET NAMES 'sjis'") の 関数は使えないのでしょうか? もし使えないとするならば、何か変わりの方法があると良いのですが 表示する時に項目ごとに変換する mb_convert_encoding を 使う方法はあると思うのですが、出来たら手間をかけたくないのと MySQLの4.0環境とMySQLの5.0環境両方でなるべく変更を少なく 実行したいと思っております。 どなたか、お分かりの方がおられましたら是非ご教授下さい。 

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

    お世話になります。 MySQLからデータを取得してWEBで表示するために mysql_fetch_assoc関数を使っています。 SQL文を作って、mysql_query関数で実行させ、 結果をmysql_fetch_assocの引数にしているのですが 作成するSQL文に”DESC”を追加すると何も表示されなくなります。 (mysql_num_rowsでデータ数は取得できているのでSQL自体は有効の ようです) SQL文から”DESC"を取ると、mysql_fetch_assocの結果も正常に表示 されるのですが、どうしても降順に並べ替えて表示したいので 解決方法をご存知の方ご教授ください。よろしくお願いします。

    • 締切済み
    • PHP
  • Mysql UPDATE出来ません

    PHP+MySQLでホームページ開発中ですが、MySQLで特定idのフィールドの更新処理(UPDATE)が出来ません。初心者です宜しくお願いします。 【Mysqlで確認した点】 (1)XAMPP・MyAdminからは以下のSQL文で問題なく更新できる。 "UPDATE upload_list SET rem='ABCDEF' WHERE id=15;" 【問題は?】 以下のphpからは更新できません。 【phpで確認した点は?】 (1)DBへ正常に接続してる。 (2)文字コードも正常にSETしてる。 (3)UPDATE実行後の$RESULT(返り値)がない。 (4)PHPを実行後、MyAdminでDBを確認しても更新されていない。 【phpコード】 <?php //データベースパラメータ定義 $DBSERVER="localhost"; $DBUSER="root"; $DBPASSWORD=""; $DBNAME="up_load"; $DATANAME="upload_list"; //Mysqlに接続 if(mysql_connect($DBSERVER,$DBUSER,$DBPASSWORD)) {echo "DB接続済/";} else {echo "<h2>データベースに接続できません</h2>";die();} //Mysql停止 //データベースを選定 mysql_select_db($DBNAME); //Mysqlの文字セットを定義 $sql = "SET NAMES ujis;"; $result = mysql_query($sql); if ($result==true){echo "文字コードSET済/";} //更新id、rem(更新記事)をSET $id=15; $new_rem="ABCDEF"; echo $DATANAME."/".$id."/".$new_rem."/"; //Mysql更新処理 $result=mysql_query('UPDATE $DATANAME SET rem=$new_rem WHERE id=$id;'); if ($result==true){echo "更新!";} else {echo "更新出来ず";} //XAMMP phpMyAdminからは以下のSQL文で更新できた。 //UPDATE upload_list SET rem='ABCDEF' WHERE id=15; ?> 【実行後のブラウザ表示】 DB接続済/文字コードSET済/upload_list/15/ABCDEF/更新出来ず

    • ベストアンサー
    • MySQL