関数・クラス解説

mysql_query

version:PHP 4, PHP 5 (公式)

MySQL クエリを送信する

公式リファレンス

書式

mysql_query ( string $query [, resource $link_identifier = NULL ] ) : mixed

説明

mysql_query() は、 ひとつのクエリを送信します (複数クエリの送信はサポートしません)。 送信先は、link_identifier で指定したサーバー上にある、現在アクティブなデータベースです。

パラメータ

query
SQL クエリ。 クエリ文字列は、セミコロンで終えてはいけません。 クエリ内のデータは 適切にエスケープ する必要があります。
link_identifier
MySQL 接続。指定されない場合、mysql_connect() により直近にオープンされたリンクが指定されたと仮定されます。そのようなリンクがない場合、引数を指定せずにmysql_connect() がコールした時と同様にリンクを確立します。リンクが見付からない、または、確立できない場合、E_WARNING レベルのエラーが生成されます。

返値

SELECT, SHOW, DESCRIBE や EXPLAIN 文、その他結果セットを返す文では、 mysql_query() は成功した場合に resource を返します。エラー時には FALSE を返します。 それ以外の SQL 文 INSERT, UPDATE, DELETE, DROP などでは、 mysql_query() は成功した場合に TRUE 、エラー時に FALSE を返します。 返された結果にアクセスするためには、結果リソースを mysql_fetch_array() やその他の関数に渡します。 SELECT 文によって返された行の数を知るには mysql_num_rows() を用います。また DELETE, INSERT, REPLACE, または UPDATE 文で変更された行の数を 知るには mysql_affected_rows() を用います。 クエリが参照するテーブルにアクセスする権限がない場合も mysql_query()は失敗し、FALSE が返されます。

注意

警告 この拡張モジュールは PHP 5.5.0 で非推奨になり、PHP 7.0.0 で削除されました。MySQLi あるいはPDO_MySQL を使うべきです。詳細な情報はMySQL: API の選択 やそれに関連する FAQ を参照ください。この関数の代替として、これらが使えます。

  • mysqli_query()
  • PDO::query()

サンプル

例1 間違ったクエリ

次のクエリは文法的に間違っているので、 mysql_query()は失敗し FALSEを返します。

$result = mysql_query('SELECT * WHERE 1=1'); if (!$result) {     die('Invalid query: ' . mysql_error()); }

例2 正しいクエリ

次のクエリは正しいので、mysql_query() は resource を返します。

// これはユーザーが指定する。たとえば $firstname = 'fred'; $lastname  = 'fox'; // クエリの作成 // これは SQL クエリを実行する最良の方法です。 // さらなる例は、mysql_real_escape_string() を参照ください。 $query = sprintf("SELECT firstname, lastname, address, age FROM friends      WHERE firstname='%s' AND lastname='%s'",     mysql_real_escape_string($firstname),     mysql_real_escape_string($lastname)); // クエリの実行 $result = mysql_query($query); // 結果のチェック // MySQL に送られたクエリと返ってきたエラーをそのまま表示します。デバッグに便利です。 if (!$result) {     $message  = 'Invalid query: ' . mysql_error() . "\n";     $message .= 'Whole query: ' . $query;     die($message); } // 結果の利用 // $result をそのまま出力してもリソースの内部の情報にはアクセスできません。 // 結果に対して MySQL の関数を適用する必要があります。 // mysql_result(), mysql_fetch_array(), mysql_fetch_row() なども参照ください。 while ($row = mysql_fetch_assoc($result)) {     echo $row['firstname'];     echo $row['lastname'];     echo $row['address'];     echo $row['age']; } // 結果セットに関連付けられているリソースの開放 // これは、スクリプトが終了する際に自動的に実行されます。 mysql_free_result($result);

参考

  • mysql_connect() - MySQL サーバーへの接続をオープンする
  • mysql_error() - 直近に実行された MySQL 操作のエラーメッセージを返す
  • mysql_real_escape_string() - SQL 文中で用いる文字列の特殊文字をエスケープする
  • mysql_result() - 結果データを得る
  • mysql_fetch_assoc() - 連想配列として結果の行を取得する
  • mysql_unbuffered_query() - MySQL に SQL クエリを送信するが、結果に対してのフェッチやバッファリングは行わない
  • ワード検索


    ※入力キーワードが、関数名・説明文・タグに含まれるものを検索

    関数名アルファベット別

    A B C D E F G H I J
    K L M N O P Q R S T
    U V W X Y Z _

    最終更新一覧

    stristr
     大文字小文字を区別せず文字列を検索し、ヒット箇所以降(あるいは以前)の文字列を返却

    stripslashes
     バックスラッシュでエスケープされた文字列から、バックスラッシュを取り除く

    stripos
     大文字小文字を区別せずに文字列が最初に現れる位置を取得する

    stripcslashes
     addcslashes() でクォートされた文字列をアンクォートする

    strip_tags
     文字列から HTML と PHP のタグを除去して返却

    strcspn
     指定した文字が最初に現れる位置を調べる

    strcoll
     ロケールに基づいて2つの文字列を比較し同じか(あるいは大小)を判定する

    strcmp
     2つの文字列を比較し同じか(あるいは大小)を判定する

    strchr
     strstr() のエイリアス

    strcasecmp
     2つの文字列を比較(大文字小文字を区別せず同じとみなす)

    カテゴリー一覧

    PHP の振る舞いの変更
    音声フォーマットの操作
    認証サービス
    コマンドライン関連
    圧縮およびアーカイブ
    暗号
    データベース関連
    日付および時刻関連
    ファイルシステム
    自然言語および文字エンコーディング
    画像処理および作成
    メール関連
    数学
    テキスト以外の MIME 型
    プロセス制御
    その他の基本モジュール
    その他のサービス
    検索エンジン用の拡張モジュール
    サーバー固有のモジュール
    セッション関連
    テキスト処理
    変数・データ型関連
    ウェブサービス
    Windows 用のモジュール
    XML 操作
    GUI用の拡張モジュール