問題タブ [prepared-statement]
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 - PHPでmySQLプリペアドステートメントの結果の列名を決定するにはどうすればよいですか?
つまり、次のような準備済みステートメントを使用します。
$mysqli->field_count を使用して、返される列の数を取得できると思います(試していません)。
しかし、各列名を bind_results で返される値にリンクする方法はありますか? コマンド自体からいつでも列名を解析しようとすることができますが、それは私が行きたい道ではありません。
環境:
クラス プロパティをデータベースから返された列名にマップする PHP インターフェイスを定義できるようにしたいと考えています。与えられた
と
bind_results を使用して、次のようなことを行うことができます (疑似コード)
必要な 2 つの列 (col1 と col2) だけを取り出し、それらをクラス A の正しいプロパティに割り当てます。
java - PreparedStatement の再利用
私たちのコード ベースで findbugs を実行したところ、まだクローズする必要があるステートメントがあと 2 つあることが指摘されました。コードのこのセクションでは、次を実行します。
3 つの異なるクエリに対して、preparedStatement を再利用します。finally ブロックでは、リソースを閉じます。
次の connection.prepareStatement(query) の前にステートメントを閉じる必要があります。それとも、このfindbugsは慎重ですか?
php - プリペアドステートメントが何も返さない
準備されていない手続き型のメソッドでテストしたので、この特定のクエリが機能することはわかっています。ここにあります:
セクションテーブルのインデックスとしてid列があるので、php.netでの上記のステートメントを前提として、結果としてそれもバインドする必要があることに気付きました(ありがとう、Bill)。
新しいコードは次のとおりです。
提案を提供できるすべての人に改めて感謝します。(興味があります。このようにプリペアドステートメントのOOPスタイルを使用すると、デバッグが困難になります。たとえば、実際に使用されたクエリを簡単に確認する方法はありますか?)
私が次のことをすると、簡単で汚い例として:
私のデータが表示され、すべてが順調です。ただし、次のことを行う場合:
私が正しいと信じていること(もちろん、そうでない場合は遠慮なく叫んでください)、私は何も得られません。さらに、そのコードでは、(念のために)html検証を行うと、内部サーバー警告(500)が表示されます。これは、SQLコードの問題であると見なされます。私はただのナッツですか?
php - 準備済みステートメントを使用した INSERT または UPDATE での NULL 値の使用
場合によっては、テーブルにいくつかの null 値を挿入するか、値を NULL に設定して更新する必要があります。
Postgres のドキュメントのどこかで、これは実行できないが、デフォルト値でだまされる可能性があることを読みました。
この例では、次の場合と同じ結果になることがわかっています。
しかし、準備されたステートメントには問題があります。
同じ問題が update ステートメントにも当てはまります。
pgmyadminはそれを行うことができる(またはできるように見える)ため、解決策があると思います。
テーブルで null 値を使用する必要がある理由を知りたい場合は、例を挙げてみましょう (null 値よりも優れた方法があるのではないでしょうか?)。
空にすることもできますが、一意のインデックスを持つ列を持つusers
テーブルがあるとします。email
2 つの空のメールは等しく、一意の制約に違反しますが、2 つのNULL値は等しくなく、共存できます。
java - クエリは、preparedStatementのパラメータマーカーでは機能しません
コードからの抜粋
上記のコードは正常に実行されます。
しかし、私がこれを実行しようとすると
例外がスローされます。"準備する文字列にパラメータマーカーの無効な使用が含まれています"
ここで何が問題になる可能性がありますか?
回答が見つかりました。コメントをご覧ください
java - この Java PreparedStatement が parameterIndex = 1 で ArrayIndexOutOfBoundsException 0 をスローするのはなぜですか?
次のメソッドは、String val = getCell("SELECT col FROM table WHERE LIKE(other_col,'?')", new String[]{"value"});
(これは SQLite です) のようなもので呼び出されると、java.lang.ArrayIndexOutOfBoundsException: 0 at org.sqlite.PrepStmt.batch(PrepStmt.java:131)
. 誰かがここで私のかわいそうな不機嫌を憐れみ、その理由を手伝ってくれませんか?
このsetString()
場合、ps.setString(1, "value")
問題になることはありません。明らかに私は間違っていますが。
よろしくお願いします。
mysql - 複数の行でのMySQL検索
私はテーブルを持っています:
そして、1つのクエリ/ステートメントでユーザー名の名と姓を検索したい..複数の行は必要ありません..のように..言ってみましょう..
ユーザー名: maria33 forname: マリア
したがって、これは1行である必要があります.. mar%を検索すると
2ではありません!
java - SQLException: JZ0S4: 空の (長さゼロの) クエリは実行できません。準備されたステートメントについて
Connection で PreparedStatements を実行するクラスを次に示します。
電話する
別のクラスから、これは例外をスローし、
例外は SQLException: JZ0S4: Cannot execute an empty (zero-length) query です。準備されたステートメントで。理由がわかりません。ここで私が間違っていることを誰かが見ていますか?
ありがとう!
php - PHPMysqliはステートメントオブジェクトを作成しない準備をしました
プリペアドステートメントでphpmysqli拡張機能を使用していますが、1つのクエリでクエリオブジェクトが作成されていません。
コードは次のとおりです。
問題:
行if($query = $this->mysqli->connection->prepare($sqlq))
Theif()
はfalseを返しているため、$query
オブジェクトを作成せず、if内のコードを実行していません。
echo $sqlq;
リターン:
"SELECT id、name FROM productcategories JOIN products ON productcategories.productid = products.id WHERE categoryid =?OR categoryid =?OR categoryid =?OR categoryid =?OR categoryid =?OR categoryid =?"
何も悪いことはありません。
どんな助けでも大歓迎です、
ありがとう、ニコ