問題タブ [rows-affected]
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 UPDATE が個々の結合されたテーブルに影響を与えたかどうかを判断する
http://us3.php.net/manual/en/pdostatement.rowcount.phpによると:
PDOStatement::rowCount() は、対応する PDOStatement オブジェクトによって実行された最後の DELETE、INSERT、または UPDATE ステートメントによって影響を受けた行の数を返します。
単一のクエリを使用して、個々の JOIN されたテーブルが影響を受けたかどうかを知ることは可能ですか? たとえば、次のクエリが与えられた場合、影響を受けたかどうかt1
、および影響を受けたかどうかをどのように知ることができt2
ますか?
php - mysqli OOPで影響を受ける行の数を取得するには? -1 を返す Mysqli OOP 影響を受ける行
mysqli OOP で影響を受ける行の数を取得する正確な方法は何ですか? msqli OOP を使用して crud クラスを作成しています。私はint -1を取得しています。
var_dump($stmt) の出力は次のとおりです。
php - MySQL UPDATE が実際に WHERE 句のある行と一致したかどうかを判断する方法は?
PHPでこのようなアップデートを実行したい
セキュリティを強化するために、creater_id を追加して、ログインしたユーザーが請求書の作成者である場合にのみコードが更新されるようにしました。それ以外の場合、システムは更新されません。
私は当初、AFFECTED_ROWS を使用してこの状態を確認するつもりでした。しかし、最終的に多くの不満を抱いた後、すべての新しい値が古い値と同じである場合、AFFECTED_ROWS が 0 を返すことに気付きました。これは、invoice_item の値が異なっていても、更新されないことを意味します。
UPDATE の前に SELECT を実行する以外に、UPDATE がいずれかの行に一致したかどうかを教えてくれる SQL クエリまたは PHP 関数はありますか?
php - 影響を受ける行は、0、1、-1、3、または一部のシナリオでは NULL を返す場合があります [推奨される回答]
PHP のドキュメントには、この特定のスタックに関する質問への回答と同様に、一部のシナリオで affected_rows ステートメントが 0、1、-1、さらには 3 を返す理由が含まれています。
PHP/MySQLI:ected_rows の読み取り値がおかしい
しかし、私がぶつかった壁は、ected_rows が NULL を返すということでした。現在、この問題に回答しているスタックの質問は見つかりませんでした。だから私はそれがNULLを返す理由を理解しました。
構文を間違えているためです。私は、affected_rows の使用を num_rows と同じように関連付ける傾向があります。しかし、実際には両方の使用法が異なるため、特定の NULL 値を取得しました。
num_rows の使用法:
これにより、適切な行数が返されます。
影響を受けた行の使用法:
これは、変数が true または false を返すの$query
とは異なり、null を返します。$query
したがって、このような場合は、常に$handler
データベース コネクタ オブジェクトを呼び出す必要があります。
これは私がちょうど今対処した問題であり、戻ってドキュメントページを見ると、完全に見逃していることがわかります。影響を受ける行を num_rows と同じように扱う傾向がある人が多いと思いますが、それは私だけです。しかし、この質問は自己回答型のものですが、ここに掲載する価値があると思います。なぜなら、最終的に var_dump を実行して問題の核心に到達するまでにほぼ 12 時間かかったからです。
誰かがこれに対するより良い答えを知っている場合は、この答えを改善してください。
問題は、なぜ num_rows と affected_rows の両方がそのようなコンテキストで異なる扱いを受けるのかということです。
php - 重複キーの更新時にmysqlを挿入し、どちらが発生したかを確認します
PHPで、次のクエリでどちらが発生し たか (INSERT
または) を検出する方法:UPDATE
php - PHP modified_rows が負の 1 (-1) を返す
これは非常に奇妙です。クエリは正常に実行され、データがテーブルに挿入されますが、影響を受ける行は 1 ではなく負の側に表示されます。
connect.php:
メインコードは次のとおりです。
$test は「-1」を返します