Deprecated: The each() function is deprecated. This message will be suppressed on further calls in /home/zhenxiangba/zhenxiangba.com/public_html/phproxy-improved-master/index.php on line 456
PHP: MySQL 関数 (PDO_MYSQL) - Manual
[go: Go Back, main page]

PHP
downloads | documentation | faq | getting help | mailing lists | reporting bugs | php.net sites | links | conferences | my php.net

search for in the

PDO_MYSQL DSN" width="11" height="7"/> <mysql_unbuffered_query
Last updated: Thu, 31 May 2007

view this page in

XCIX. MySQL 関数 (PDO_MYSQL)

導入

PDO_MYSQL は、PHP から MySQL 3.x、4.x および 5.x データベースへのアクセスを可能にするための PHP Data Objects (PDO) インターフェース を実装したドライバです。

PDO_MYSQL は、MySQL 4.1 以降に存在するプリペアドステートメントを ネイティブにサポートしているという利点があります。 古いバージョンの mysql クライアントライブラリを使用している場合は、 PDO がこの機能をエミュレートします。

警告

注意: MySQL のテーブル型 (ストレージエンジン) の中には、 トランザクションをサポートしていないものがあります。 トランザクションをサポートしていないテーブル型を使用して トランザクションを使用するコードを書くと、 MySQL はトランザクションが正常に使用できたかのように振舞います。 さらに、DDL クエリを実行する際には、 実行中のトランザクションが暗黙的にコミットされます。

定義済み定数

このドライバでは以下の定数が定義されて います。これは拡張モジュールが PHP に組み込まれているか、実行時に動的にロード されている場合のみ使用可能です。さらに、これらのドライバ固有の定数は そのドライバを使用している場合にのみ使用されます。 postgres ドライバで mysql 固有の属性を使用すると、予期せぬ結果を引き起こします。 もし複数のドライバを使用しているコードを実行している場合、 PDO::getAttribute()PDO_ATTR_DRIVER_NAME 属性を使用することで、使用中のドライバ名を調べることが可能です。

PDO::MYSQL_ATTR_USE_BUFFERED_QUERY (integer)

PDOStatement でこの属性を TRUE に設定すると、 MySQL ドライバはバッファ版の MySQL API を使用します。 移植性の高いコードを書くには、代わりに PDOStatement::fetchAll() を使用すべきです。

例 1419. mysql でクエリのバッファリングを強制する

<?php
if ($db->getAttribute(PDO::ATTR_DRIVER_NAME) == 'mysql') {
   
$stmt = $db->prepare('select * from foo',
        array(
PDO::MYSQL_ATTR_USE_BUFFERED_QUERY => true));
} else {
    die(
"このアプリケーションは mysql でしか動作しません。代わりに \$stmt->fetchAll() を使用すべきです");
}
?>

PDO::MYSQL_ATTR_LOCAL_INFILE (integer)

LOAD LOCAL INFILE を有効にします。

PDO::MYSQL_ATTR_INIT_COMMAND (integer)

MySQL サーバへの接続時に実行するコマンドを指定します。 再接続の際には自動的に再実行されます。

PDO::MYSQL_ATTR_READ_DEFAULT_FILE (integer)

my.cnf ではなく、 指定した名前のファイルからオプションを読み込みます。

PDO::MYSQL_ATTR_READ_DEFAULT_GROUP (integer)

my.cnf あるいは 別のファイル (MYSQL_READ_DEFAULT_FILE で指定したもの) の中の、指定した名前のグループからオプションを読み込みます。

PDO::MYSQL_ATTR_MAX_BUFFER_SIZE (integer)

バッファの最大サイズ。デフォルトは 1 MiB です。

PDO::MYSQL_ATTR_DIRECT_QUERY (integer)

プリペアドステートメントではなく、直接クエリを実行します。

目次

PDO_MYSQL DSN — MySQL データベースに接続する


add a note add a note User Contributed Notes
MySQL 関数 (PDO_MYSQL)
konrads dot smelkovs at gmail dot com
18-Jul-2007 07:39
A note for the eager:
There is no way how to get returned row count from an executed prepared statement without fetching the rows.
davey at php dot net
07-Jun-2007 05:46
To use "PDO::MYSQL_ATTR_USE_BUFFERED_QUERY" you should call
PDO::setAttribute("PDO::MYSQL_ATTR_USE_BUFFERED_QUERY", true);

It will not work when passed into PDO::prepare()

- Davey
dibakar at talash dot net
12-Sep-2006 03:31
PDO is much better option for calling procedures, views or triggers of mysql 5.x versions from PHP instead of using mysqli extension. Following is a simple demo script which can  help anybody on how to call and use mysql procedures through php

try {
        $dbh = new PDO('mysql:host=xxx;port=xxx;dbname=xxx', 'xxx', 'xxx', array( PDO::ATTR_PERSISTENT => false));

        $stmt = $dbh->prepare("CALL getname()");

        // call the stored procedure
        $stmt->execute();

        echo "<B>outputting...</B><BR>";
        while ($rs = $stmt->fetch(PDO::FETCH_OBJ)) {
            echo "output: ".$rs->name."<BR>";
        }
        echo "<BR><B>".date("r")."</B>";
   
    } catch (PDOException $e) {
        print "Error!: " . $e->getMessage() . "<br/>";
        die();
    }

 
show source | credits | sitemap | contact | advertising | mirror sites