ความหมายและการใช้งานฟังก์ชัน mysqli_store_result()
ฟังก์ชัน mysqli_store_result() เป็นฟังก์ชันที่ใช้ในการโอนชุดผลลัพธ์จากการค้นหาครั้งล่าสุด
ลักษณะในการใช้งานมี 2 สไตล์ ดังนี้
- สไตล์ OO: Object oriented style(โอโอ: อ็อปเจ็กออเล็นเต็ด สไตล์)
mysqli_result mysqli::store_result ([ int $option ] )
- สไตล์กระบวนการ (Procedural style(โพรเซโดะเรา สไตล์))
mysqli_result mysqli_store_result ( mysqli $link [, int $option ] )
โดยกำหนดให้
link แทน ตัวระบุการเชื่อมโยงที่ส่งกลับโดย mysqli_connect () หรือ mysqli_init()
Option แทน ตัวเลือกที่ผู้ใช้ต้องการตั้งค่า ตัวเลือกที่ถูกต้องคือ MYSQLI_STORE_RESULT_COPY_DATA คัดลอกผลลัพธ์จากบัฟเฟอร์ภายใน mysqlnd(มายเอสคิวแอลเอ็นดี) เป็นตัวแปร PHP(พีเอชพี) ที่เรียกใช้โดยค่าเริ่มต้น mysqlnd(มายเอสคิวแอลเอ็นดี) จะใช้ตรรกะอ้างอิงเพื่อหลีกเลี่ยงการคัดลอกและทำซ้ำผลลัพธ์ที่จัดขึ้นในหน่วยความจำ สำหรับชุดผลลัพธ์บางอย่างตัวอย่างเช่นชุดผลลัพธ์กับแถวเล็ก ๆ วิธีการคัดลอกสามารถลดการใช้หน่วยความจำโดยรวมได้เนื่องจากตัวแปร PHP(พีเอชพี) ที่มีการเก็บข้อมูลอาจได้รับการเผยแพร่ออกไปก่อนหน้านี้ (ใช้ได้กับ mysqlnd(มายเอสคิวแอลเอ็นดี) เท่านั้นเนื่องจาก PHP(พีเอชพี) 5.6.0)
ตัวอย่าง สไตล์ OO: Object oriented style(โอโอ: อ็อปเจ็กออเล็นเต็ด สไตล์)
<?php
$mysqli = new mysqli("localhost", "root", "", "test");
/* check connection */
if (mysqli_connect_errno()) {
printf("ไม่สามารถเชื่อมต่อฐานข้อมูลได้: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT user();";
$query .= "SELECT first_Name FROM user ORDER BY id LIMIT 2, 1";
/* execute multi query */
if ($mysqli->multi_query($query)) {
do {
/* store first result set */
if ($result = $mysqli->store_result()) {
while ($row = $result->fetch_row()) {
printf("%s\n", $row[0]);
}
$result->free();
}
/* print divider */
if ($mysqli->more_results()) {
printf("-*-*-*-*-*-*-*-*-\n");
}
} while ($mysqli->next_result());
}
/* close connection */
$mysqli->close();
?>
ผลลัพธ์
ตัวอย่างการใช้งานฟังก์ชัน mysqli_store_result() ในสไตล์กระบวนการ (Procedural style(โพรเซโดะเรา สไตล์))
<?php
$link = mysqli_connect("localhost", "root", "", "test");
/* check connection */
if (mysqli_connect_errno()) {
printf("ไม่สามารถเชื่อมต่อฐานข้อมูลได้: %s\n", mysqli_connect_error());
exit();
}
$query = "SELECT user();";
$query .= "SELECT first_Name FROM user ORDER BY id LIMIT 3, 1";
/* execute multi query */
if (mysqli_multi_query($link, $query)) {
do {
/* store first result set */
if ($result = mysqli_store_result($link)) {
while ($row = mysqli_fetch_row($result)) {
printf("%s\n", $row[0]);
}
mysqli_free_result($result);
}
/* print divider */
if (mysqli_more_results($link)) {
printf("-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-*-\n");
}
} while (mysqli_next_result($link));
}
/* close connection */
mysqli_close($link);
?>
ผลลัพธ์
ข้อมูลอ้างอิง: php.net
: dev.mysql.com