1

これは私が思うにかなり簡単な質問ですが、私は私の考えを説明します:

私が間違っていない限り、影響を受ける行の数は、実行されたクエリに本質的にリンクされています。同様に、SELECTによって返される行数は本質的にそのクエリにリンクされており、値は次のように取得されます。

echo $mysql_result_object->num_rows;

UPDATEやDELETEステートメントなどから影響を受ける行を取得するには、接続オブジェクトを介して値にアクセスする必要があるのはなぜですか?

echo $mysql_connection_object->affected_rows;

それは私にはあまり論理的ではないようです。

クエリ関数(たとえばmysqli_query)がINSERT / UPDATE / DELETEステートメントに対してブール値trueを返すからですか?その場合...彼らは空の結果オブジェクトを返すべきではありませんか?

4

1 に答える 1

0

あなたはあなた自身の質問にほとんど答えたので、私は本当に明確にしています。

num_rows結果セットで動作します。したがって、結果セットを返す操作に対してのみ有効です。つまり、SELECT または SHOW です。

INSERT、UPDATE、および DELETE は結果セットを返しません。最後の文に答えるには; すでにブール値を返しているため、空の結果セットを返すことはできません。

affected_rowslink_identifier に関連付けられた最後のクエリの影響を受けた行の数を返します。

したがって、num_rowsINSERT、UPDATE、DELETE には使用できませんが、SELECT には使用できます。この場合、 のように動作します。affected_rowsnum_rows

于 2012-12-12T12:40:29.257 に答える