mysqli_result :: field_seekとmysqli_fetch_assocを使用してフィールドデータを取得する方法は?
データベース操作にPHPのMySQLI拡張機能を使用する場合、クエリ結果セットでフィールドデータを取得することは一般的なタスクです。 MySQLI拡張機能は、結果セットを処理する複数の方法を提供します。ここでは、 mysqli_result :: field_seekとmysqli_fetch_assocは2つの非常に有用な機能です。 field_seekを使用すると、結果セットポインターを指定されたフィールド位置に移動できますが、 mysqli_fetch_assocはアソシティブ配列に設定された結果のデータを取得できます。これらの2つの機能を使用すると、必要なフィールドのデータを取得するためにより効率的かつ柔軟になります。
mysqli_result :: field_seek :この方法では、結果のポインターを指定されたフィールドインデックス位置に移動できます。 mysqli_fetch_assoc 、 mysqli_fetch_rowなどの機能を通じて得られた後続のデータに影響します。
mysqli_fetch_assoc :このメソッドは、現在の結果セットのポインター位置からデータの列を取得し、連想配列として返します。
ユーザーと呼ばれるデータベーステーブルがあるとしますが、テーブル構造は次のとおりです。
<span><span><span class="hljs-keyword">CREATE</span></span><span> </span><span><span class="hljs-keyword">TABLE</span></span><span> users (
id </span><span><span class="hljs-type">INT</span></span><span> </span><span><span class="hljs-keyword">PRIMARY</span></span><span> KEY,
username </span><span><span class="hljs-type">VARCHAR</span></span><span>(</span><span><span class="hljs-number">50</span></span><span>),
email </span><span><span class="hljs-type">VARCHAR</span></span><span>(</span><span><span class="hljs-number">100</span></span><span>),
age </span><span><span class="hljs-type">INT</span></span><span>
);
</span></span>
FIELD_SEEKとMySQLI_FETCH_ASSOCを使用してフィールドデータを取得する方法を示す簡単なPHP例を以下に示します。
<span><span><span class="hljs-meta"><?php</span></span><span>
</span><span><span class="hljs-comment">// データベース接続を作成します</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span> = </span><span><span class="hljs-keyword">new</span></span><span> </span><span><span class="hljs-title function_ invoke__">mysqli</span></span><span>(</span><span><span class="hljs-string">"localhost"</span></span><span>, </span><span><span class="hljs-string">"username"</span></span><span>, </span><span><span class="hljs-string">"password"</span></span><span>, </span><span><span class="hljs-string">"database_name"</span></span><span>);
</span><span><span class="hljs-comment">// 接続が成功しているかどうかを確認してください</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error) {
</span><span><span class="hljs-keyword">die</span></span><span>(</span><span><span class="hljs-string">"Connection failed: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->connect_error);
}
</span><span><span class="hljs-comment">// クエリを実行します</span></span><span>
</span><span><span class="hljs-variable">$query</span></span><span> = </span><span><span class="hljs-string">"SELECT id, username, email, age FROM users"</span></span><span>;
</span><span><span class="hljs-variable">$result</span></span><span> = </span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">query</span></span><span>(</span><span><span class="hljs-variable">$query</span></span><span>);
</span><span><span class="hljs-comment">// クエリが成功したかどうかを確認してください</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$result</span></span><span>) {
</span><span><span class="hljs-comment">// 使用 field_seek 指定されたフィールドの場所に移動します</span></span><span>
</span><span><span class="hljs-comment">// 最初に取得したいとします 'email' フィールド(第二个フィールド),フィールド索引从 0 始める</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">field_seek</span></span><span>(</span><span><span class="hljs-number">2</span></span><span>); </span><span><span class="hljs-comment">// 'email' フィールド的索引为2</span></span><span>
</span><span><span class="hljs-comment">// 結果を取得する最初の行</span></span><span>
</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>();
</span><span><span class="hljs-comment">// この行にデータを出力します,見せる 'email' フィールド</span></span><span>
</span><span><span class="hljs-keyword">if</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span>) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Email: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'email'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// 他のデータの行を取得し続けます</span></span><span>
</span><span><span class="hljs-keyword">while</span></span><span> (</span><span><span class="hljs-variable">$row</span></span><span> = </span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">fetch_assoc</span></span><span>()) {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Username: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'username'</span></span><span>] . </span><span><span class="hljs-string">" - Age: "</span></span><span> . </span><span><span class="hljs-variable">$row</span></span><span>[</span><span><span class="hljs-string">'age'</span></span><span>] . </span><span><span class="hljs-string">"\n"</span></span><span>;
}
</span><span><span class="hljs-comment">// 結果セットをリリースします</span></span><span>
</span><span><span class="hljs-variable">$result</span></span><span>-></span><span><span class="hljs-title function_ invoke__">free</span></span><span>();
} </span><span><span class="hljs-keyword">else</span></span><span> {
</span><span><span class="hljs-keyword">echo</span></span><span> </span><span><span class="hljs-string">"Error: "</span></span><span> . </span><span><span class="hljs-variable">$mysqli</span></span><span>->error;
}
</span><span><span class="hljs-comment">// データベース接続を閉じます</span></span><span>
</span><span><span class="hljs-variable">$mysqli</span></span><span>-></span><span><span class="hljs-title function_ invoke__">close</span></span><span>();
</span><span><span class="hljs-meta">?></span></span><span>
</span></span>
データベース接続:最初に、新しいmysqli()を使用してデータベースへの接続を作成します。
クエリ実行:クエリは$ mysqli-> query()を介して実行され、ユーザーテーブルのID 、ユーザー名、電子メール、および年齢フィールドをクエリします。
field_seekを使用してフィールドポインターを移動します: field_seek(2)を呼び出して、結果のポインターを電子メールフィールドの位置に移動します(インデックス値は2)。現時点では、 mysqli_fetch_assocは、電子メールフィールドから関連するデータのみを返します。
データを取得して表示: mysqli_fetch_assoc()を介してデータの各行を取得し、電子メールフィールドの内容を表示します。 Field_Seekは後続のfetch_assoc呼び出しに有効であるため、データを取得するためにどのフィールドを柔軟に制御できることに注意してください。
リリース結果セット: $ result-> free()は、クエリ結果セットをリリースするために使用されます。
データベース接続を閉じます: $ mysqli-> close()データベース接続を閉じます。
Field_Seekメソッドは、現在の結果セットに基づいて、後続のすべてのfetch_*関数に影響するため、使用するように注意してください。使用する前に、クエリ結果の構造とフィールドの順序を理解していることを確認してください。
mysqli_fetch_assoc()現在の行のすべてのフィールドデータを含む連想配列を返します。フィールド名は配列のキーです。
クエリ結果セットに複数のフィールドが含まれ、特定の順序で一部のフィールドのデータを取得する場合、 mysqli_fetch_assocの場合、 field_seekを介してポインターの動きを制御して正しいフィールドを取得できます。
mysqli_result :: field_seekとmysqli_fetch_assocを使用すると、クエリの結果をより柔軟に操作できるようになります。 Field_Seekによってフィールドポインターの位置を設定することにより、特定のフィールドのデータを選択的に取得できます。この組み合わせは、特にクエリ結果の一部のフィールドをスキップする必要がある場合、またはフィールドの順序を柔軟に調整する必要がある場合に特に役立ちます。