問題タブ [sqlbindparameter]
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.
c++ - C++ sqlite3 バインド パラメータ
私は C++ 用の sqlite3 ライブラリを数日間しか使っていませんが、かなりのフラストレーションを感じています。
パラメータ化された CREATE TABLE を定義し、後でパラメータをそれにバインドしたいと考えています。次のようになります。
アイデアは、別のファイル (このヘッダー ファイルへの .cpp) で、これらのパラメーターを次のようにバインドできるということです。
ここで、_DB_FIELD_SIZE_NAME は別の場所でも定義されています。
パラメーターの順序を変更したり、新しいパラメーターを追加したりする可能性があり、バインドを明示的に維持したいため、andの代わりに含むsprintf()
と一緒に使用したくありません。CREATE_SQL
%d
:NAME_LEN
:OTHER_LEN
ここで、問題について説明します。私の準備は を返しませんSQLITE_OK
が、 の null ポインターになりsqlite3_stmt
ます。ここに私が持っているものがあります:
だから、私が得ているエラーはこれです:
私は何を間違っていますか?データベース接続が正常に開くと確信しています。
php - bind_paramを使用してMySQLiにMySQLNOW()関数を使用してレコードを挿入するにはどうすればよいですか?
PHPのバインドパラメータを使用して、MySQLiPDOでこのmysqlクエリを実行する必要があります。
このようなスクリプトを使用していますが、publish_dateが正しく挿入されていません。
publish_date
次のようにレコードを列に挿入し0000-00-00 00:00:00
ます。これを行うにはどうすればよいですか?前もって感謝します。
PS:日付列のタイプはですdatatime
。
php - PDO bindParam はバインドしません
次の準備済みステートメントがありますが、バインドされません$u
。
戻り値:
$getAccountInfo: "object(PDOStatement)#2 (1) { ["queryString"]=> string(109) "SELECT
status
,pass
,fail_count
,tel
,role
FROMtest
.accounts
WHEREuser
=:ユーザー;" } "$accountInfo: "bool(false) "
(bindValueなどを試しました)
エラーメッセージ/例外はありません(ただし、正しいデータベース接続情報で指定すると、エラーがスローされます)
返された sql をコピーしてコマンドラインに貼り付け、 に置き換える:user
と'jacob'
、問題なく動作します。
EDIT :問題は、スクリプトが使用していたアカウントにテーブルに対する権限がなかったことでしたaccounts
(権限がselect
付与されていてもtest.*
)。accounts
その理由は、そのアカウントに選択を許可した後に作成されたためだと思います:/
sql-server - SqlServer エラー HY000: varbinary(max) のフィールドに 400 KB を超えるオブジェクトを使用して SQLPutData を呼び出している間の部分的な挿入/更新
C++ から ODBC を呼び出して、400KB を超えるオブジェクトを varbinary(max) 列に保存しようとすると、大きな問題が発生します。
SqlPrepare、SQLBindParameter、SQLExecute、SQLPutData を呼び出す基本的なワークフローは次のとおりです (最後のものは何度も)。
SqlPrepare :
StatementHandle 0x019141f0
StatementText "UPDATE DT460 SET DI024543 = ?, DI024541 = ?, DI024542 = ? WHERE DI006397 = ? AND DI008098 = ?"
テキストの長さ 93
最初のパラメーター (BLOB フィールド) のバインディング:
SQLBindParameter :
StatementHandle 0x019141f0
ParameterNumber
1
InputOutputType
1
ValueType
-2 (SQL_C_BINARY)
ParameterType
-4 (SQL_LONGVARBINARY
)
SQLExecute :
StatementHandle 0x019141f0
SQLPutData を数回呼び出して、32K のチャンクで BLOB を保存しようとします:
SQLPutData :
StatementHandle 0x019141f0
32768
文字の std::vector の DataPtr アドレス
最初の 32KB のデータを使用した最初の SQLPutData 操作中に、次の SQL Server エラーが発生しました:
[HY000][Microsoft][ODBC SQL Server Driver]Warning: Partial insert/update. テキスト列またはイメージ列の挿入/更新に失敗しました。
これは、サイズが 400KB を超えるオブジェクトを保存しようとすると常に発生します。400KB より小さいものを保存することは問題なく機能します。
重要なパラメーターは SQLBindParemter の ColumnSize であることがわかりました。SQLBindParameter 中のパラメーター StrLenOrIndPtr は、より低い値 (32K など) を持つことができますが、それでも同じエラーが発生します。
しかし、SQL Server API によると、32KB より小さいデータのチャンクで SQLPutData を呼び出す限り、これが問題になる理由がわかりません。
問題が何であるかを知っている人はいますか?
どんな助けでも大歓迎です。
php - PDO bindparams exec() または execute() で影響を受ける行を取得する
PDO::exec() と bindparams について 1 つ質問があります。
exec($sql) は、影響を受ける行の数を返します。しかし、prepare->bindParams()->execute() のように params を exec() にバインドできますか?
答えが「いいえ」の場合、prepare->bindParams()->execute() のトリックで影響を受ける行を取得できますか? (実行はtrue / falseのみを返すことを理解しています)
手伝ってくれてありがとう。
mysql - PDOMySQLクエリのLIKEのGET値のbindParam
変換する方法はありますか
のようなものに
クエリのbindParam(":term", $term);
代わりに使用できるようにするには?'%$term%'
MySQL PDOクエリおよび Mysql、PDOのbindParamでのLIKEの使用についてはすでに説明しました。likeステートメントはbindParamを使用して機能しません。しかし、彼らは私の質問に対する適切な答えを私に与えません。
php - パラメータ化されたSQLを使用してデータベース内のフィールドを動的に選択できますか?
アプリケーションのさまざまなオプションのそれぞれのフィールドを含むデータベーステーブルUSER_OPTIONSがあり、次のように効果的に表示されます。
次に、私のアプリケーションは、このテーブルを調整するためにAJAXリクエストを実行したいと考えています。
AJAXを介して送信される情報は、変更されたデータベースフィールドの配列と、それらの新しい値(JSON形式)です。
私の計画は、パラメータ化されたSQLクエリを次の行に沿って使用することでした。
次に、連想配列を反復処理して、のペア$my_field_for_updating
と$my_new_field_value
からのペアを取得し$my_new_settings
ます。
でも。
その後、php.netのマニュアルで次のことを発見しました。
(「マーカー」は、パラメーター化されたSQLクエリの「?」変数に使用される用語です)
ノート:
マーカーは、SQLステートメントの特定の場所でのみ有効です。たとえば、INSERTステートメントのVALUES()リスト(行の列値を指定するため)、またはWHERE句の列との比較で比較値を指定することができます。
ただし、識別子(テーブル名や列名など)、SELECTステートメントによって返される列に名前を付ける選択リスト、または=等号などの二項演算子の両方のオペランドを指定することはできません。パラメータタイプを判別することは不可能であるため、後者の制限が必要です。マーカーをNULLと比較することはできませんか?もNULLです。一般に、パラメーターはデータ操作言語(DML)ステートメントでのみ有効であり、データ定義言語(DDL)ステートメントでは有効ではありません。
したがって、これは私の提案した解決策を台無しにしました。
次のアイデアは、データベース内のすべてのフィールドを更新するSQLクエリを作成することでしたが、新しく更新されたフィールド値のみを含めることでした。ただし、データがないフィールドの「マーカー」に割り当てるには、魔法の「何もしない」変数が必要になることがわかりました。
しかし、私は$magic_do_nothing_value
実際に何であるかを知りません(そしてグーグルするのは難しいと思いました)。私が試したものはすべて、エラーをスローするか、「false」と解釈されました。
だから私の最初の質問は:MYSQLデータベースが「何もしない」ためのシグナルとして受け入れる値はありますか?
存在しないと仮定して、これから先に進むと、次の考えは、指定されたデータベースから現在のすべての値をドラッグUSER_ID
し、変更を加えてこれらを修正し$my_new_settings
、それに応じてすべてのフィールドでデータベースを更新することでした。
ただし、これは、特に私の最初のソリューションと比較すると、多くの不要な作業のように思われます。
それは私をここに導き、より良いものを求めます!
あなたが持っているかもしれないどんな考えにも感謝します、私はそれらを聞くことに本当に興味があります。これは、PHP5.2と基本的なMySQL5.0.92データベースで実行されています。
mysql - PDO - username=:user_id、バインド値である firstname を更新する方法
このクエリを実行しようとしていますが、「致命的なエラー:メッセージ「SQLSTATE[42000]: 構文エラーまたはアクセス違反: 1064 You have an error in your SQL syntax; check the manualこれは、/home/a7668955/public_html/uploadproc1.php:106 の 1 行目の近くで使用する正しい構文の MySQL サーバー バージョンに対応しています。スタック トレース: #0 /home/a7668955/public_html/uploadproc1.php( 106): PDOStatement->execute() #1 {main} が 106 行目の /home/a7668955/public_html/uploadproc1.php でスローされました"
SQLステートメントを書いた方法に関係していると確信していますが、user_idが2回使用されたときに値をバインドする方法がわかりませんか?
助けてくれてありがとう!(このクエリは、古い mysql_* を使用して正常に実行されました)
php - PHPのprepareステートメントでパラメータをバインドする方法は?
prepareステートメントで配列値を送信したいのですが機能しません
私のコードは:
php - Mysqliバインドパラメーター–変数の数がパラメーターの数と一致しません
「変数の数がプリペアドステートメントのパラメータの数と一致しません」というエラーが発生する理由がわかりません。
私のコードは次のようになります: