問題タブ [pdostatement]
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 - PDO::FETCH_CLASSTYPE - 予期しない結果
私はここで途方に暮れています。「stdClass」を取得する理由がわかりません。1列目から名前を取得するべきではありませんか?
php - pdoステートメントとforeachでcatchブロックが機能しないことを試してください
最近、私は PHP コードの奇妙なエラーを助長しました。try{}catch(){}
でPDOStatement オブジェクトを使用すると、内側のブロックが省略されるようなものforeach(){}
です。この動作をトリガーするテストコードは次のとおりです。
これは、ローカルホスト (PHP 5.3.6-13ubuntu3.6 with Suhosin-Patch (cli)) およびサーバー (PHP 5.2.17) で次のような出力を出力します。
理由はわかりませんが、すべてに変更foreach($sth as $row){
するforeach($sth->fetchAll() as $row){
と期待どおりに動作します:
バグを見つけましたか、それとも何か間違ったことをしていますか? 誰かがその行動を確認できますか?どうも
//編集
PHP のバージョンを 5.3.10 にアップグレードすると、この問題が解決するようです。助けてくれてありがとう...
php - PDOでENUMタイプを番号でバインドする方法
次のように、MySQLENUMタイプをPDOステートメントの番号でバインドすることは可能ですか?
php - PDO::commit の後に使用した場合の PDOStatement::rowCount の結果は?
MySQL ドキュメントにはmysql_affected_rows
、トランザクションのコミット後に使用することに関する注意事項があります:
http://php.net/manual/en/function.mysql-affected-rows.php
注: トランザクション トランザクション
を使用している場合、COMMIT の後ではなく、INSERT、UPDATE、または DELETE クエリの後にmysql_affected_rows()を呼び出す必要があります。
ただし、PDOStatement::rowCount
ドキュメントにはそのようなメモはありません:
http://www.php.net/manual/en/pdostatement.rowcount.php
PDO
これは、オブジェクトを使用する場合、INSERT、UPDATE、または DELETE クエリの後に、コミットが影響を受ける行数に影響しないことを意味しますか?
php - PDOStatement fetchColumn()でのPHPの致命的なエラー
このエラーが理解できません。誰かに説明してもらえますか?
PHPの致命的なエラー:27行目の/user/dal.php内の非オブジェクトに対するメンバー関数fetchColumn()の呼び出し
正規表現を使用して最後のクエリで新しいSELECT COUNT(*)
クエリを実行することにより、最後のクエリのカウントを取得しようとしています。問題は$stmt->fetchColumn()
致命的なエラーを引き起こし、それから私は得るError 500
。
私は何が間違っているのですか?
php - PHP でのデータベース呼び出しに PDOStatements を再利用する効率性
prepare() によって返された PDOStatement を何らかのクラス変数に保存し、同じ呼び出しを実行するときに再準備するのではなく、そのステートメント オブジェクトを再利用するのは効率的でしょうか?
これは、クエリまたはメソッドが呼び出されるたびに新しいステートメントを準備するよりも効率的ですか?
php - デフォルトの FETCH_CLASS を使用するように PDOStatement を拡張します。クラス名は文字列である必要があります
私は PDO をいじって、結果のデフォルトの戻りクラスを作成しようと試み、またこれを一般的なデフォルトの動作にしました。
PDOStatement
これにより、インスタンス化時にデフォルトのクラスを設定するように拡張する必要があることがわかりました。
コードに明らかなエラーはありません。
DB ラッパーで PDO インスタンスを作成するとき、拡張ステートメント クラスを使用するように DB ハンドルを設定し、クラス名を結果クラスのパラメーターとして渡します。通常は stdClass を使用しますが、代わりに、拡張する単純なクラスを作成しましたArrayObject
。
これはすべて問題ないように見えますが、次のエラーが発生します。
SQLSTATE[HY000]: General error: Invalid class name (should be a string)
これは最良のエラー メッセージではなく、エラーが発生している内容や場所に関する情報を実際に提供するものではありませんが、これは上記のセグメントによるものだと思います。そのセクションを削除すると、問題は発生しませんもうエラー。
うまくいけば、誰かが私に向かう方向を教えてくれることを願っています.
事前に感謝します。私が提供した情報が十分でない場合は、お気軽にお問い合わせください:]
php - 整数インデックスを持つ配列としてのMySQL PDO fetchAll
2列のテーブルがあります。表:ctgtable
および 列:id
およびctg
. mysql_*
以前の関数から に完全に移行しているため、愚かな間違い (または知識不足)PDO
に直面しています。
質問
ctg
テーブルの列全体 (最大で合計 20 行) を整数インデックスの配列に選択したいと考えています。
私の方法
私の意見では、最も近い解決策は次のとおりです。
同じ結果のための他のより短い/より良い代替手段はありますか? または、これが結果を取得するための最良/唯一の方法です。
サンプルテーブル
等
サンプル結果
インデックスは 0 から始まる場合とそうでない場合があります。私には関係ありません。そのような質問を探してみましたが、どれも私の質問に関連しているようには見えませんでした。
php - このbindValueは間違っていますか?
私はPDO statement
次のようにしています(AFAIKescaped
、PDOは準備のためにデータを必要としません):
このコードは何もしません。ただし、次のようなダンプが生成されます。
php - PDO::Query() が false を返す
PHP で PDO を学習して使用しようとしています。query() メソッドで問題が発生しました。
ウェブサイトのタイトルをランダムに選択しようとしてい$sth = $db->query("SELECT * FROM titles ORDER BY RAND() LIMIT 1");
ますが、何らかの理由で$sth
常に false です。と を使用するprepare()
と機能execute()
しますが、 の何が問題なのかを見つけようとしていますquery()
。
呼び出されている関数全体は次のとおりです。