問題タブ [mysqli]
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 - SQL LIKE クエリの失敗 - 準備されたステートメントの致命的なエラー
次のコードがあります。
これはうまくいくはずです。ただし、次のエラーが表示されます。
SQL 構文にエラーがあります。near '? を使用する正しい構文については、MySQL サーバーのバージョンに対応するマニュアルを確認してください。WHERE upper(ARTICLE_NAME) LIKE '%?%'' at line 1
私が入れたら
クエリは正常に機能します。$table は上記で定義され、クエリは GET から受信され、両方とも正しい有効な値です。なぜこれが失敗するのですか?
編集: に変更:
エラーが発生します:
警告: mysqli_stmt::bind_param() [mysqli-stmt.bind-param]: 変数の数が、C:\Program Files\EasyPHP 3.0\www\prog\get_records.php の準備されたステートメントのパラメーターの数と一致しません。 38
コマンドが同期していません。現在、このコマンドを実行することはできません
一方
結果は
致命的なエラー: 38 行目の C:\Program Files\EasyPHP 3.0\www\prog\get_records.php で参照によってパラメーター 2 を渡すことはできません
そして最後に
のみを与えます:
コマンドが同期していません。現在、このコマンドを実行することはできません
LIKEステートメントにパラメーターを使用することは不可能ですか?
php - PHPのmysqliクラスはSQLインジェクションから100%保護しますか?
私はmysqliに関する多くの記事や質問を見てきましたが、それらはすべて、SQLインジェクションから保護すると主張しています。しかし、それはばかげた証拠ですか、それともそれを回避する方法がまだありますか?クロスサイトスクリプティングやフィッシング攻撃には興味がなく、SQLインジェクションだけに興味があります。
私が最初に言わなければならないことは、私が準備されたステートメントを使用しているということです。それが私がmysqliで意味したことです。文字列を連結せずにプリペアドステートメントを使用する場合、それは絶対確実ですか?
php - 結果をphp配列にバインドする
クエリから結果を取得してページに表示するために、次のコードを試していtes.php
ます。
db.inc.php
tes.php
エラー メッセージは表示されませんが、結果は表示されません。空白のページです。
私は何を間違えましたか?
php - コマンドが同期していません。現在、このコマンドを実行することはできません
mysqliを介して2つのMySQLクエリを呼び出すPHPコードを実行しようとしていますが、「コマンドが同期していません。現在、このコマンドを実行できません」というエラーが表示されます。
これが私が使っているコードです
私はこれを読んでみましたが、どうしたらよいかわかりません。ストアの結果と無料の結果について読んだことがありますが、これらを使用しても違いはありません。このエラーが発生している正確な時点がわかりません。原因とその修正方法を知りたいと思います。
私のデバッグステートメントを見ると、nearの近くにある私のsql構文のエラーのために、countQueryの最初のifループも入力されていません'% ? %'
。ただし*
、LIKE句に基づいて制限しようとするのではなく、選択しただけでも、コマンドの同期がとれていないエラーが発生します。
php - 準備済みステートメントからのデータのフェッチ
LIKE クエリに基づいて選択された、データベースからのレコードを含む行の配列を返す関数があります。セキュリティ上の理由から、このクエリを準備済みステートメントにしたいと考えています。どうやら私がやっているように、バインドされたパラメーターとクエリ関数を使用することはできません。その場合、クエリを準備済みステートメントとして保持し、返そうとしている行を返す方法がわかりません。
while ループにはまったく入っていません。
php - PHP と MySQLi を使用して、異なるデータベース テーブルに変数と配列を挿入する
私は PHP と MySQL を学んでおり、学習目的で映画の Web サイトを作成しています。
映画情報を含む変数と配列をデータベースに挿入したいが、別のテーブルに挿入したい。
これは私が今持っているものです:
これにより、変数が movies テーブルに挿入されます。
しかし、映画のジャンル、俳優、言語なども (同時に) 挿入する必要があります。それらは配列にあり、別のテーブル (そしておそらく別の行) に入ります。たとえば、ジャンル テーブル内のジャンル (アクション、犯罪、ドラマ) のジャンルを含む配列、および俳優テーブル内の俳優など... 次に、多対多および 1 対多のテーブルを使用して、情報を表示します。
誰かがこれを行う方法を私に説明できますか?? データベースに複数回接続する必要がありますか?? ループが必要ですか?私はPHPとMySQLiに本当に慣れていないので、できる限り説明してください.
ありがとう。
php - MySQL クエリがデータベース テーブル データの変更に成功したかどうかをテストする方法は?
次の単純な php コード スニペットがあります。これは、呼び出されると、関連する記事をデータベースから削除します。結果は JavaScript 関数に渡され、AJAX 経由でページが更新されます。false
以下のように、クエリが失敗した場合は文字列を返したいと思います。
見逃したものと、クエリが成功したかどうかを確認する正しい方法を知りたいです。
php - 「mysql_fetch_row」を使用してデータベースから結果を取得し、PHP と mysqli を使用して配列に挿入しますか?
複数の行からデータを取得し、結果を列挙型配列に挿入する必要があるため、「for」ループを使用してエコーすることができます...
私はこれを持っています(私はすでにデータベースに接続しています):
ここでは、最初の結果 (行) を変数に取得します。ただし、これを列挙型配列に挿入する必要があるため、これを使用して各結果をエコーできます。
これは echo:$genre[0], $genre[1], $genre[2],
など、最後のものまで続きます。
私はそれmysql_fetch_row
が仕事をすることができることを知っていますが、私はプログラミングに慣れていないので、非常に詳細な説明が必要です..ありがとう!!
php - PHPのmysqliデータアクセス関数を混合しますか?
過去数日間に使用されたいくつかの質問を見てきましmysqli
たが、答えはとの違いを認識していないよう$stmt->execute()
です$db->query()
。
私が理解しているように、の結果にアクセスするための2つの異なるモデルがありますmysqli
。
column => value
これは生のSQLを使用し、SQLインジェクション攻撃を防ぐためにプログラマーが入力をエスケープする必要がありますが、プログラマーはマッピングを含む連想配列(またはプレーン配列)を取得できます。
または、これを行うこともできます。これにより、パラメーターと結果を適切にバインドできますが、(AFAIK)では単純な配列結果を得ることができません。
私の質問はmysqli
、最初のパターンに示されている単純な配列出力を取得する方法はありますが、2番目のパターンに従って安全にバインドされた入力パラメーターを使用する方法はありますか?
とにかくこれを行う方法が見つかりません(代わりに使用する以外PDO
に!)。