問題タブ [pdo]
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.
pdo - 移植性の向上を期待して PDO クエリに制限を設定する
私は Creole の代わりに PDO ライブラリを使用し始めましたが、制限を設定する関数が見つからないことを除いて、ほとんどの同様のものを見つけました。
MSSQL と MySQL は同じ構文を共有していないため、クエリ文字列に limit ステートメントを含める必要はないと思います。
php - 配列をIN()条件にバインドできますか?
PDOを使用して値の配列をプレースホルダーにバインドできるかどうか知りたいです。ここでのユースケースは、IN()条件で使用するために値の配列を渡そうとしています。
私はこのようなことをしたいと思っています:
そして、PDOにバインドさせ、配列内のすべての値を引用します。
現在、私は次のことを行っています。
確かにどちらが仕事をしますが、私が欠けている組み込みのソリューションがあるかどうか疑問に思っていますか?
php - 並行性の問題
MySQLとPHP+Propel 1.3を使用しているときに、同時実行の問題が発生しているようです。以下は、Propelオブジェクトの「保存」メソッドの小さな例です。
問題は$fooオブジェクトです。非常に短い時間で、サンプルメソッドの2つの呼び出しを次々に取得するとします。場合によっては、2番目のトランザクションが$foo...を読み取る場合
...最初のトランザクションがそれを保存する機会を得る前に...
...2番目のトランザクションによって読み取られた$fooは古くなり、悪いことが起こります。
Fooオブジェクトが格納されているテーブルを強制的にロックして、最初のトランザクションが作業を終了した後にのみ後続のトランザクションがそこから読み取ることができるようにするにはどうすればよいですか?
編集:コンテキストはWebアプリケーションです。要するに、場合によっては、最初のリクエストでデータの変更を行いたいことがあります(これは、$ fooのフェッチと保存の間に発生します)。以降のすべてのリクエストで変更を行うことはできません。変更が発生するかどうかは、フェッチされた$ fooの状態(テーブルの行属性)によって異なります。2つのトランザクションが同じ$fooをフェッチする場合、変更が2回発生し、問題が発生します。
php - PDOとPostgreSQLを使用して複数の結果セットを返すことはできますか?
複数のクエリをPostgreSQLに存在する単一の関数にグループ化したいと思います。関数はPDOを使用して照会されます。
関数は次のとおりです。
これがPHPコードです。通常の接続プロパティを設定するシングルトンクラスとしての「データベース」。特別なことは何もありません。
そしてその結果。
これはサポートされていないことを示しているように見えますが、それでも、正確に何であるかを定義するリストが見つかりません。
誰かがこれをうまく機能させることができましたか?
参照:
zend-framework - Zend_Dbの正しい使用法
現在、データベース接続を管理するためにZend_Dbクラスを使用しています。それについていくつか質問がありました。
- 接続を開くことをスマートに管理していますか?(たとえば、接続がすでに開いていますが、それを利用することを知っていますか?または、新しい接続を開く前に、すでに開いている接続があるかどうかを常に確認する必要がありますか?)
- 次のコードを使用して結果をフェッチします(FETCH_OBJモードでフェッチします)。
何らかの理由で、fetchRowが機能しないため、結果が1つしかない場合でも(検索WHERE id= numberやIDがPKの場合など) 、常にfetchAllを使用します。
私の質問は、結果だけがある場合でも、fetchRowではなくfetchAllを使用すると、どれだけの時間/メモリを犠牲にするのかということです。
- 接続を管理するために、次のクラスを作成しました。
それから私は電話します
これが最善の方法ですか?誰かがより良いアイデアを持っていますか?
ありがとう!
psここでコードのフォーマットがお粗末になってすみません。
php - PDO ストアド プロシージャの戻り値
エラー コードを返す SQL Server ストアド プロシージャを使用しています。これは、SP の非常に単純なスニペットです。
次を使用して、mssql 拡張機能で戻り値を取得できます。
ただし、PDO で戻り値にアクセスする方法がわかりません。これらのストアド プロシージャの多くは既に記述されているため、OUT パラメータは使用しない方がよいでしょう。これは、現在 PHP でプロシージャを呼び出す方法の例です。
php - 挿入時にストリングを適切な長さに自動的にクリップ
MySQL にさまざまな VARCHAR フィールドを持つテーブルがあります。PHP 経由でフォームからユーザー データを挿入したいと考えています。明らかに、PHP のフィールド長がわかっている場合は、そこでデータ長を制限できますsubstr()。しかし、それは DRY (MySQL に格納され、PHP スクリプトの定数として格納されるフィールド長) に違反しています。失敗するのではなく、過度に長い文字列を自動的に切り捨てるように INSERT を構成する方法はありますか?
編集: 文字列が長すぎると、PHP/PDO で失敗します (または少なくとも例外が発生します)。PHP/PDOで何をしなければならないかわからないので、正しいことをします。
編集2:うーん。これは間違ったアプローチです。INSERT で問題なく動作しても、文字列の重複をチェックしようとすると、正しく一致しません。
php - PHP + PDO / MySQL:VARCHARフィールドの長さを見つけるために自動的にクエリを実行する方法は?
PHP + PDOを使用してMySQLデータベースにクエリを実行し、いくつかのVARCHARフィールドの列幅を見つける方法はありますか?可能であれば、それらをPHPファイルにハードコーディングしたくありません。
(目的:これらの列に挿入されるか、列内の既存のデータと比較される文字列の最大長を決定します。)