問題タブ [bindparam]

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.

0 投票する
1 に答える
315 参照

php - リフレクションを使用して、bind_param メソッドによって mysqli でデータを挿入する方法は? これら2つの配列の違いは何ですか?

bind_param($types, $var1, $var2, $var3,..)クラスのメソッドとして、2番目のパラメーターの後mysqli_stmtに一連のパラメーターを取得し$variablesます(そこに配列を渡したい)。$variables私の場合、その数は不明ですinsert($data)。関数でリフレクションを使用したいです。http://php.net/manual/ru/mysqli-stmt.bind-param.php

混乱を避けるために、関数の不要な部分は示していません...

無関係なコードを削除

に示すように

この部分では、リフレクションを使用して、配列をオブジェクトのbind_param()メソッドの2 番目のパラメーターに渡し$this->$stmtます。

1-option では mysqli をテーブルに挿入しません。

しかし、mysqli は 2 オプションを使用するとデータを挿入します。なんで?パラメータの数が不明なため、1 オプションで使用する必要があります。

Reflection と mysqli からどのように利益を得ることができますか?

これら 2 つのオプション (配列) の違いは何ですか?

0 投票する
1 に答える
255 参照

php - クラスのプライベート メンバー変数を介して bindParam literate

Userプライベート メンバー変数と getter/setter 関数のみで呼び出されるクラスを作成します

だからprint_r($user)私に次のようなものを与えるでしょう:

現在、PDO を使用してオブジェクトをデータベースに挿入しています (問題の一部ではなく機能しているため、接続部分はスキップします)。ここで、データを挿入する私の関数:

同様に動作します。ただし、php error_reporting を に変更するとE_ALL | E_STRICT、ランタイムの厳密な警告も表示され、挿入コードによって行の警告strict standards only variables should be passed by referenceが生成されbindParamます。Googleに尋ねたところ、明らかに2つのステップでこれを行う必要があることがわかりました。

それらを新しい形式に変換した後、すべてが警告なしで機能します。

問題は、私のオリジナルUser-classは20を超えるプライベートメンバー変数ではるかに大きく、このような他のクラスも持っているということです. だから私は変数を繰り返し処理し、それらを配列に保存し、bindParamそれらを配列として保存することを考えていました。しかし、その後foreach、パブリック変数のみをループし、プライベート変数をループしないという問題に直面します...だから私の質問は次のとおりです。

  1. bindParamどういうわけかループと組み合わせることができますか?
  2. もしそうなら、どうすればプライベートメンバー変数をループして保存できますか?

便宜上、どこでも同じ命名形式を使用しています。つまり、 with データベースの列には、withおよびas getter/setterfirstnameに対応するものがありますm_firstnameUser-classget_firstname()set_firstname($firstname)

0 投票する
1 に答える
64 参照

mysqli - 警告: mysqli_stmt::bind_param(): 変数の数が準備済みステートメントのパラメーターの数と一致しません 5

私はコーディングの初心者です。旅行代理店の新しいメンバー データを作成したばかりですが、このコードがうまく動作しないと混乱します。初めてこのコードをmysqliの4行に使用したときはうまく動作しましたが、複雑なデータを試したときは実行されませんでした。

ここにmysqliコードがあります:

更新mysqliメッセージをクリックすると、次のようになります。

これは私のサンプルphpコードです:

0 投票する
0 に答える
172 参照

php - BindParam Foreach ループが機能しない

これは何らかの理由で機能しません。同じループは SELECT ステートメントでは正常に機能しますが、INSERT ステートメントでは機能しません。

0 投票する
1 に答える
3013 参照

php - PDO プリペアド ステートメントとバインド パラメータについて

経験から、そして準備されたステートメントを使用してパラメーターをバインドすることの利点も常に言われてきたため、コードでこれら2つの手法を常に使用してきましたが、これら2つの手法のそれぞれの目的を正確に理解したいと思います。

準備されたステートメントの私の理解から:

前のコードは、私が提案したクエリを使用して、データベースに一種のバッファーを作成する必要があります。私の理解では (そして私は非常に間違っている可能性があります)、前のコードは安全ではありません。文字列は実際の内容に$sql応じて何でもかまいません。$id$id1; DROP TABLE myTable;--

私の理解から、これは私のパラメーターをバインドする場所です。代わりに次のことを行う場合:

データベースは、事前に sql ステートメントのすべての部分を正確に認識している必要があります: SELECTこれらの列:* FROM myTableおよびWHERE id =「ユーザーが入力した変数」、および の場合"a variable that was input by the user" != a variable、クエリは失敗します。

私の理解は正しいと言われた人もいれば、それは間違っていると言われた人もいます。間違っているか、正しいか、または何かが欠けているかどうかを誰かに知らせてもらえますか? すべてのフィードバックは大歓迎です!

0 投票する
0 に答える
39 参照

php - 複数のパラメーターを持つ SQL クエリの準備 (mysqli)

この sql クエリの準備が無効である理由がわかりません。

結果は「ダメ」。それはどのように行われるべきですか?

am_measurements テーブルのデータは次のとおりです: https://mega.nz/#!tJEx0IiL!OoXHSVJh0A0kAVzYrcJKL6BGxktcZZWpOC26KV-Egao

@編集

問題の原因はわかりましたが、その理由と解決方法はわかりません。

以前のSQLクエリを削除すると、すべて問題ありません。

0 投票する
1 に答える
672 参照

php - mysqli_query() は、パラメータ 2 が bind_param を持つ文字列であることを期待しています

ブラウザで archive.php を呼び出すとエラーが発生します: 警告: mysqli_query() はパラメータ 2 が文字列であると想定しています。