การรับและใช้ 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

ตัวแปรการกำหนดค่าเซิร์ฟเวอร์