0

PHP のドキュメントには、この特定のスタックに関する質問への回答と同様に、一部のシナリオで affected_rows ステートメントが 0、1、-1、さらには 3 を返す理由が含まれています。

PHP/MySQLI:ected_rows の読み取り値がおかしい

しかし、私がぶつかった壁は、ected_rows が NULL を返すということでした。現在、この問題に回答しているスタックの質問は見つかりませんでした。だから私はそれがNULLを返す理由を理解しました。

構文を間違えているためです。私は、affected_rows の使用を num_rows と同じように関連付ける傾向があります。しかし、実際には両方の使用法が異なるため、特定の NULL 値を取得しました。

num_rows の使用法:

$query = $handler->query("some select query");
$rows = $query->num_rows;

これにより、適切な行数が返されます。

影響を受けた行の使用法:

$query = $handler->query("some update insert query");
$rows = $query->affected_rows;

これは、変数が true または false を返すの$queryとは異なり、null を返します。$queryしたがって、このような場合は、常に$handlerデータベース コネクタ オブジェクトを呼び出す必要があります。

これは私がちょうど今対処した問題であり、戻ってドキュメントページを見ると、完全に見逃していることがわかります。影響を受ける行を num_rows と同じように扱う傾向がある人が多いと思いますが、それは私だけです。しかし、この質問は自己回答型のものですが、ここに掲載する価値があると思います。なぜなら、最終的に var_dump を実行して問題の核心に到達するまでにほぼ 12 時間かかったからです。

誰かがこれに対するより良い答えを知っている場合は、この答えを改善してください。

問題は、なぜ num_rows と affected_rows の両方がそのようなコンテキストで異なる扱いを受けるのかということです。

4

0 に答える 0