การรับและใช้ MySQLi Metadata
มีข้อมูลสามอย่างที่คุณต้องการจาก MySQLi
Information about the result of queries - รวมถึงจำนวนบันทึกที่ได้รับผลกระทบจากคำสั่ง SELECT, UPDATE หรือ DELETE
Information about tables and databases - รวมถึงข้อมูลที่เกี่ยวข้องกับโครงสร้างของตารางและฐานข้อมูล
Information about the MySQLi server - รวมถึงสถานะปัจจุบันของเซิร์ฟเวอร์ฐานข้อมูลหมายเลขเวอร์ชัน ฯลฯ
ง่ายมากที่จะรับข้อมูลเหล่านี้ที่ mysqli prompt แต่ในขณะที่ใช้ PERL หรือ PHP API เราจำเป็นต้องเรียก API ต่างๆอย่างชัดเจนเพื่อรับข้อมูลเหล่านี้ทั้งหมด ส่วนต่อไปนี้จะแสดงวิธีการรับข้อมูลนี้
การได้รับจำนวนแถวที่ได้รับผลกระทบจากการค้นหา
ตัวอย่าง PERL
ในสคริปต์ DBI จำนวนแถวที่ได้รับผลกระทบจะถูกส่งกลับโดย do () หรือโดย execute () ขึ้นอยู่กับวิธีที่คุณดำเนินการสืบค้น -
# Method 1
# execute $query using do( )
my $count = $dbh->do ($query);
# report 0 rows if an error occurred
printf "%d rows were affected\n", (defined ($count) ? $count : 0);
# Method 2
# execute query using prepare( ) plus execute( )
my $sth = $dbh->prepare ($query);
my $count = $sth->execute ( );
printf "%d rows were affected\n", (defined ($count) ? $count : 0);
ตัวอย่าง PHP
ใน PHP เรียกใช้ฟังก์ชัน mysqli_affected_rows () เพื่อดูว่ามีการเปลี่ยนแปลงคิวรีกี่แถว -
$result_id = mysqli_query ($query, $conn_id);
# report 0 rows if the query failed
$count = ($result_id ? mysqli_affected_rows ($conn_id) : 0);
print ("$count rows were affected\n");
รายชื่อตารางและฐานข้อมูล
นี่เป็นเรื่องง่ายมากที่จะแสดงรายการฐานข้อมูลและตารางทั้งหมดที่มีอยู่ในเซิร์ฟเวอร์ฐานข้อมูล ผลลัพธ์ของคุณอาจเป็นโมฆะหากคุณไม่มีสิทธิ์เพียงพอ
นอกเหนือจากวิธีการที่ฉันได้กล่าวไว้ด้านล่างคุณสามารถใช้การสืบค้นตารางแสดงหรือแสดงฐานข้อมูลเพื่อรับรายการตารางหรือฐานข้อมูลทั้งใน PHP หรือใน PERL
ตัวอย่าง PERL
# Get all the tables available in current database.
my @tables = $dbh->tables ( );
foreach $table (@tables ){
print "Table Name $table\n";
}
ตัวอย่าง PHP
<?php
$servername = "localhost:3306";
$username = "root";
$password = "";
$dbname = "TUTORIALS";
$conn = new mysqli($servername, $username, $password, $dbname);
if ($conn->connect_error) {
die("Connection failed: " . $conn->connect_error);
}
echo"Database connected";
$sql="SHOW DATABASES";
if (!($result = mysqli_query($conn,$sql))) {
printf("Error: %s\n", mysqli_error($conn));
}
while( $row = mysqli_fetch_row( $result ) ){
if (($row[0]!="information_schema") && ($row[0]!="mysql")) {
echo $row[0]."\r\n";
}
}
$conn->close();
?>
รับข้อมูลเมตาของเซิร์ฟเวอร์
มีคำสั่งต่อไปนี้ใน MySQL ซึ่งสามารถเรียกใช้งานได้ที่ mysql prompt หรือใช้สคริปต์ใด ๆ เช่น PHP เพื่อรับข้อมูลสำคัญต่างๆเกี่ยวกับเซิร์ฟเวอร์ฐานข้อมูล
ซีเนียร์ | คำสั่งและคำอธิบาย |
---|---|
1 | SELECT VERSION( ) สตริงเวอร์ชันเซิร์ฟเวอร์ |
2 | SELECT DATABASE( ) ชื่อฐานข้อมูลปัจจุบัน (ว่างเปล่าถ้าไม่มี) |
3 | SELECT USER( ) ชื่อผู้ใช้ปัจจุบัน |
4 | SHOW STATUS ตัวบ่งชี้สถานะเซิร์ฟเวอร์ |
5 | SHOW VARIABLES ตัวแปรการกำหนดค่าเซิร์ฟเวอร์ |