問題タブ [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 - MySQL からの値が PHP で型を保持していることを確認するにはどうすればよいですか?
int
データベースでおよびとしてマークされているにもかかわらず、MySQL から呼び出された値が文字列として返されるという PHP スクリプトで問題が発生していますtinyint
。
これは、MySQL の日付に基づく配列を JSON データに変換するときに、整数であるべき値が二重引用符で囲まれているため、その JSON データを使用する Javascript と iPhone アプリの両方で問題を引き起こしているためです。"key" : "1"
のように見える JSON 値を取得しています"key" : 1
。
いくつかの調査を行った後、PHP 5.3 とモジュールがインストールされている限り、値をネイティブ型として取得できるようです。mysqlnd
私は 5.3.3 を持っており、モジュールをインストールして実行しphpinfo()
ていることを示しているようです:mysqlnd
ただし、私の値はまだ文字列として返されています。
mysqlndの PHP マニュアル エントリを見てきましたが、明らかなものが欠けている可能性は常にありますが、ネイティブ値を取得するためにコードで特定のことを行う必要があることを示すものは何も表示されません。
PHP で MySQL 関数を取得して、MySQL の結果をネイティブ型で取得するにはどうすればよいですか?
以下の回答を容易にするために、これはデータベースへの接続に使用するコマンドです。
php - クエリ メソッドが機能しない - mysqlnd ドライバーが見つからない
サーバーに mysqlnd ドライバーがないため、クエリ クラスがクライアントの新しいサーバーで動作しません。メソッドを mysqlnd を使用せず、すべてのクラスを台無しにしないように変換するにはどうすればよいですか?
php - mysqlnd: MySQL 5.5.24 に接続できません。old_passwords がオフになっています
私は2つの環境を持っています:
- 開発: Windows 7、PHP 5.3.24、Apache 2.2.24
- プロダクション: Linux、PHP 5.4.10、Apache
どちらもリモートMySQL 5.5.24
サーバーに接続します。リモート接続が許可されます。
すべての mysql 関数を に置き換えましたmysqli
。本番環境では問題なく接続できますが、開発環境では次のエラーが発生します。
MySQL が 4.1ではなく 5.5.24 であり、old_passwords
設定されているという奇妙なことOff
。ユーザーのパスワードも変更しました(ホスティングパネルから、MySQL自体でそれを行う管理者権限がありません)。
新しいバージョンの PHP (5.4.15) を試してみましたが、問題は解決しません。
私が読んだすべての参照は、古いMySQLサーバー(この場合ではありません)、old_passwordの問題(本番環境で問題なく接続するため、この場合ではありません)を指しています。
アップデート:
古いmysql
関数も機能しません。mysql を mysqli に変更する前は、PHP 5.2.* バージョンを使用していましたが、動作しました。したがって、問題は bundled に関係しているとほぼ確信していmysqlnd
ます。
php - mysqlnd を使用して PHP 5.5 で 5 を超える mysql を適切に検出する
私のアプリケーションは、次のコードを使用して、5 以上の mysql を検出しています。これは、PHP 5.2、5.3、および 5.4 でうまく機能します。
問題は、デフォルトで mysqlnd を使用する PHP 5.5 にあるため、スクリプトは mysqlnd 5.0.11-dev - 20120503 - $Id: 40933630edef551dfaca71298a83fad8d03d62d4 $ を報告し、MySQL を適切に検出できません。そのようなバージョンの例外を作成する必要がありますが、方法がわかりません。
php - mysqlnd が MySQL 5.5 サーバーに接続できない
PHP 5.3.10 を実行している開発サーバーで現在実行されているローカルで実行されているサイトを取得しようとしています。バージョン 5.5 の MySQL サーバーに接続しますが、にold_passwords
設定されていON
ます。
サイトは開発サーバー上で動作します。
私のローカルでは、PHP 5.3.26 を実行しています。接続しようとすると、次のようになります。
これは old_password 変数の問題であることは理解していますが、これは PHP 5.3 の開発サーバーで実行されています。
編集:これが私のローカルmysqlセクションですphpinfo()
:
開発サーバーの mysql セクション:
開発サーバーと一致するようにローカルを設定するにはどうすればよいですか?