2011-01-25 4 views
2

私は、オブジェクト指向スタイルを使用してPHPアプリケーション内でMySQLデータベース関数を処理しています。しかし、今のオブジェクト指向スタイルから結果リソースを生成する方法はあります私は、入力変数として結果リソースを必要とする関数を使用したいが、私は利用可能なすべての文PHP MySQL結果オブジェクトから結果リソースへの変換(OOから手続きへ)

  $oresult = $odb->query($sql); 

から結果オブジェクトでありますデータベース接続 ($ dbconn = new mysqli(...))?

おかげさま

答えて

0

あなたは、一般的に、あなたの結果セットにリソースを提供したい(データベース機能をカプセル化するラッパー関数を。すなわち、numRowsの数()、affectedRows()など)を順番にあなたを提供することができ、必要に応じて結果を反復するようにレコードを設定します。

+0

私はあなたの回答を読んでおり、基本的な理解を深めるために苦労しています。 「私の結果セットにリソースを提供する」方法OOスタイルを削除してリソースがあるか、結果リソースを得る方法があることを提案していますか?後者の場合は、例を挙げることができますか?申し訳ありませんが、私は単純なものを欠いています。 –

+0

*書き直してください* –

+0

複数の返信で分割する必要があります。最大限の文字数制限がありますので、少しコードを示してみましょう。 指定したSQL文を選択、更新、または削除するMysql_Queryクラスがあるとします。 –

0

AFAIK、OOとMysqliの手続き型スタイルは、結果リソースをまったく処理しません。 query()real_query()関数とメソッドはすべて、すぐに(または最終的には)Mysqli_resultオブジェクトを返します。メインのMysqliオブジェクトから "リンク"を抽出したり、Mysqli_resultオブジェクトからリソース(それ自体)を抽出する機能やプロパティはありません。実際には、その$linkは、Mysqliの手続きスタイルの例で参照されていますが、実際にはMysqliオブジェクトです。

使用している関数が「結果リソース」を呼び出す場合は、古い正規のMysql拡張機能から来ることを意味する必要があります。 MysqlとMysqliの関数とメソッドを混在させる方法はありません。だから、本質的には、はい、あなたは完全にこの場合、Mysql 私はを忘れて、古いスタイルの手順Mysqlから非常に最初から始める必要があります。

+0

私が以下に述べたように、Mysql関数とMysqli関数の完全な分離についてのこの説明を読んだ後、私は既存の関数を書き換えて結果オブジェクトを入力変数として受け入れることにしました。お返事をありがとうございます。 - Tom –

+0

@Tom T:問題ありません。古いものと新しいものとの間の何らかの種類のブリッジングフレームワークを開発しているなら、関数やクラスがmysqliとmysqlの両方を処理することをお勧めします。古いMySQLルートを選択した古いWebサイトで、それらをシームレスに連携させる独自の方法を設計する可能性があります。さもなければ、機能やクラスが交換されることがある(例外、spl例外など)、また時には(mysql、mysqli以外の)同様の拡張機能やプラグインにも注意してください。 –