問題タブ [mysqlnd]
For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.
php - MySQLnd がアクティブなドライバーかどうかを知る方法は?
当たり前の質問かもしれませんが、確認したいです。
MySQLnd がアクティブなドライバーであるかどうかを知るにはどうすればよいですか?
PHP 5.3 と MySQL 5.1.37 を実行しています。phpinfo() に mysqlnd がリストされていますが、これだけでは、MySQLnd を使用しているのか古いドライバーを使用しているのかわかりません...
phpinfo() 出力の抜粋
私は PDO を使用していますが、PDO ドライバーは mysql と言っています...
php - mysqlからmysqliへのモーフィング
PHPのmysqliインターフェースに少し戸惑っています。昨日、古いmysqlコードをmysqliに変更するために着手したとき、ドキュメントは私を、、およびの道に導いてくれ::prepare
まし::bind_params
た::execute
。
結果に対処するための努力の中で、私は自分自身のfetch_assocを書くことになり、SOで議論した問題が発生しました。あるコメンテーターは、私が使っていないことを質問し::fetch_assoc
ました。mysqli_resultクラスにも気づいていませんでした。mysqliコードをからにモーフィング::preapre
する::query
と、結果の処理がはるかに簡単になりました。ただし、以前::bind_results
は列を抽出していた場合、結果として得られたPHP連想配列は正しいデータ型を保持していました。代わりに::fetch_assoc
etcを使用すると、取得するのは文字列の配列だけです。
現在、コンバーターをコーディングしています。mysqliライブラリの理解において、すでに1つの重大なエラーを犯しているので、ここに投稿して、型が一致する連想結果配列を取得する「公式」な方法があるかどうかを確認したほうがよいと思いました。
php - MySQL Native Driver (mysqlnd) を有効にすることはできますか?
私のウェブホストには PHP 5.3.10 があり、 を使用し ていますがmysqli
、.get_result()
mysqlnd
いくつかのテストを行ったところ、mysqlnd
使用されていないようです。それを有効にすることは可能ですか、または PHP を再インストールする必要があります (Web ホスティングであるため、これを行うことはできません)。
それなしで動作するようにコードを変更したくありません。
mysql - MySQL/PDO はデータを切り捨てます
$book
7kbの文字列です。このクエリが PHP PDO を使用して実行される場合exec
、monograph
列 (LONGTEXT) データは 6765 文字で切り捨てられます。
ただし、クエリを印刷して SQL クライアントを使用して (PHP をバイパスして) 実行すると、すべてのデータがデータベースに挿入されます。これは、私がまだ慣れていないPHP設定だと思います。
準備済みステートメント (PDO::PARAM_LOB を含む) を使用すると、同じことが起こることに注意してください。
$book
exec
https://gist.github.com/79d5fe1050bbb0e2fac8 (7157) の前にダンプされた値。データベースにある実際のデータhttps://gist.github.com/df49d4a9707660b8b60b (6765)。クエリ全体が MySQL に渡されるため、このようなデータの切り捨てが技術的にどのように可能であるかがわかりません (そうしないと、SQL 構文エラーが発生します)。
SQL クライアントを使用して出力 (https://gist.github.com/a05fe4c033e74897b82b) を実行すると、これが最終的にデータベースhttps://gist.github.com/88870fe26a3ae40e991e (7157、予想) に格納されるデータになります。
PDO は UTF8 接続を使用して開始されます。
更新 2012 07 25 04:11 EST
今、私はそれがエンコーディングの問題であることを知っています。
しかし、私はそれについて何をすべきか確信が持てません。私のMySQLへの接続はすでにUnicodeです。
/etc/my.cnf
サーバー全体で次の設定を使用するように構成されています。
php - 致命的なエラー: 未定義のメソッド mysqli_result::fetch_all() の呼び出し
Ubuntu 10.04 で PHP に問題があります。mysqli_result::fetch_all を使用しようとすると、次のエラーが表示されます。
未定義のメソッド mysqli_result::fetch_all() の呼び出し
ただし、Windows XP では動作します。
コード:
結果を処理のために別のレイヤーに送信するため、ループでfetch_assocを使用したくありません。
PHP 5.4.4 を使用しています。およびphp -m |で grep mysql表示されない mysqlnd モジュール。どうすればインストールできますか? それが問題でしょうか?
php - MAMP と MySQL の自然なドライバー
そのため、私は MAMP を使用して自分のコンピューターでローカルにサイトを開発してきましたが、MAMP には PHP 用の MySQL Natural Driver が付属していないことが、私を本当に悩ませてきました。get_result()
なのでラブリー機能は使えません。ドライバーを使用して PHP を手動でコンパイルしようとさえしましたが、すぐに炎上しました。mysqlnd で MAMP をセットアップすることが不可能な場合、それを取得するための最良の方法を誰かが説明してもらえますか? Mac OS X 10.7 Lion を実行しています。
mysql - PHP5.3.13 コマンドライン インターフェイスから MySQL 4.1 に接続する
重複の可能性:
古い認証を使用して MySQL 4.1+ に接続できない
有効な解決策が見つからなかったため、この質問を投稿しています。では、お許しください。
私はmysql 5.5.24とPHP 5.3.13を使用しています(どちらもWAMP2インストールから)
ウェブサーバーを介してphpスクリプトからデータベースに接続できますが、同じスクリプトで次のエラーが発生します。
接続できませんでした: mysqlnd は、古い安全でない認証を使用して MySQL 4.1+ に接続できません。管理ツールを使用して、コマンド SET PASSWORD = PASSWORD('your_existing_password') でパスワードをリセットしてください。これにより、新しい、より安全なハッシュ値が mysql.user に保存されます。このユーザーが PHP 5.2 以前で実行される他のスクリプトで使用されている場合、my.cnf ファイルから old-passwords フラグを削除する必要がある場合があります。
ここに私がすでにいくつかのものがあります:
- mysqlコンソールからパスワードを変更しようとしました。
- 特権を満たしました。
phpMyAdmin の config.ini.php の以下の行を
$cfg['Servers'][$i]['extension'] = ' mysqli ' へ
$cfg['Servers'][$i]['extension'] = ' mysql '
役に立たない。
エラー メッセージは、このバージョンの mysql には存在しないmy.cnfファイルを参照しています。したがって、 my.iniである必要があると想定しましたが、古いパスワードについては何も言及されていません。
これを機能させるにはどうすればよいですか?
php - php で mysqlnd を有効にする方法は?
PHP をインストールして実行しています (バージョン: 5.3.17)。mysqlnd に切り替えたいです (phpinfo に mysqlnd がまったく存在しません)。
./configure
設定するには、コマンドを更新する必要があることを読みました:
でインストールしようとするとyum install php-mysqlnd
、エラーが発生します。
php - apcを使用したmysqlnd_qcのコンパイル中にエラーが発生しました
コマンドpecl install mysqlnd_qc
を実行してキャッシュをAPC
有効にしてインストールすると、次のエラーが発生します。
APCを有効にしないと、正常にコンパイルされます...
PHPバージョン:5.3.17
AmazonRDSで実行しています。
APCとMySQLクエリキャッシュを静的にコンパイルするとはどういう意味ですか?
それはどのように行われますか?
アップデート1:
mysqlnd_qcをAPCでコンパイルできなかったので、でコンパイルしてみましたmemcached
。ここに興味深い問題がありました。コマンドは、与え./configure
られたオプションを認識しませんでした。オプションが間違って入力されていることがわかりました...pecl
memcache
そのpecl
ため、オプションを要求しているときにインストールを強制終了し、次のコマンドを自分で実行しました。
だからmemcached
今それで動作します。
で実行している場合Fedora
(私も推測RedHat
しCentOS
ます)が利用可能ですrpm
:
アップデート2:
私はなんとかAPCでコンパイルできました。以下の詳細な回答を参照してください。
php - ホストされた Web サイトに mysqlnd をインストールする
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 をインストール/埋め込むことはできますか? そうでない場合、何日もかかるウェブサイト全体のコードを変更するのを防ぐために、どのような代替手段が必要ですか?
よろしく