3

次のエラーがスローされます。

致命的なエラー:クラスmysqli_resultのクローンできないオブジェクトを複製しようとしています

mysqlクエリ結果にcloneを直接使用しようとしている場合:

$result = mysqli_query($con, $query);
$resultsClone = clone $result;

mysqliオブジェクトのクローンを作成する方法はありますか?

4

3 に答える 3

3

名前が示すように、複製不可能なオブジェクトを複製することはできません。

もう少し詳しく言うと、この特定のケースでは、mysqli-result は(多かれ少なかれ-正確な詳細はわかりません)「別の場所」の結果へのポインターです。クローン作成とは、2 つのポインターが「別の場所」で同じ結果を参照することを意味します。これは、1 つの結果から結果をフェッチすると、確実に他の結果に影響を与えるため、深刻な副作用につながる可能性があります。

于 2012-04-25T19:07:37.680 に答える
3

KingCrunch が既に説明したように、データベースの結果ポインターのクローン作成にはあまり使用されません。ポインターやリソースと同様に、それらが存在するコンテキストは限られています。

ただし、何をしたいかによっては、クエリをもう一度実行することができます。

$result      = mysqli_query($con, $query);
$resultClone = mysqli_query($con, $query);

または、アプリケーションの状態に応じて同じリソースに巻き戻すように、フェッチ ロジックをカプセル化します。

于 2012-04-26T07:49:36.297 に答える
1

ポインターを結果のゼロ行に移動 (リターン) します。 http://www.php.net/manual/ru/mysqli-result.data-seek.php

于 2013-08-05T07:16:06.833 に答える