PHP - MySQL で Web サイトを開発しています。注意すべき点を次に示します。
- データベース アクセスにMySQLi API を使用しています。
- 私の XAMPP (Windows 7 マシン) のローカル インストールでは、PHP のバージョンは5.3.8で、MySQL のバージョンはmysqlnd 5.0.8-dev - 20102224 です。
- 「cuccfree.com」をテストするために、無料のホスティング サーバーで Web サイトをホストしました。ここで、PHP のバージョンは5.3.14で、MySQL のバージョンは5.1.66です。他の多くのホスティング会社と比較して、MySQLi のサポートは依然として優れています。
- 両方を phpinfo'ing すると、ローカル マシンにはmysqlndドライバーがインストールされていることが示されますが、ホスティング サーバーにはインストールされていません。
- 関数mysqli_stmt::get_result()を使用して ResultSet をフェッチする MySQLi 用のラッパー クラスを作成しました。この関数はローカル マシンでは機能しますが、cuccfree.com ホスティング サーバーでは機能しません。これは、 mysqliオブジェクトにget_result()という名前のメソッドがないためです。ただし、mysqli_stmtオブジェクトが準備され、bind_paramが正常に実行されます。
- php.netのmysqli_stmtのマニュアル ページには、 mysqli_stmt::get_result()を使用するには、 mysqlndドライバーをインストールする必要があると書かれています。
サーバーの構成では、mysqli_stmt::bind_object()を使用できます。しかし
get_result()
、配列の形式で結果を得ることができるので、私にとってははるかに良い選択のようです。次の行を使用して、可変数の引数を受け入れるように関数をオーバーライドしました。call_user_func_array(array($stmt, 'bind_param'), $params);
$params はパラメータの配列です。
- bind_object() を使用して、返されたすべての列を変数にバインドする必要があります。その場合、すべての SQL クエリを 1 点で処理するラッパー クラス関数を作成することはできません。
私はいくつかのホスティング会社を探し、GoDaddy や Manas Hosting を含む多くの会社のカスタマー サポートと話し、メールしましたが、それらはmysqlndの使用を提供していません。彼らは、非常に論理的に、VPSまたは専用サーバーの使用を主張しています. そして明らかに、提案されたオプションは両方とも、エントリーレベルであっても非常に高価です.
最後に私の質問ですが、Linux サーバー上の Web サイトに mysqlnd をインストール/埋め込むことはできますか? そうでない場合、何日もかかるウェブサイト全体のコードを変更するのを防ぐために、どのような代替手段が必要ですか?
よろしく