คำสั่ง SELECT เป็นคำสั่งที่ใช้ในการเลือกข้อมูลอย่างน้อย 1 ตาราง ซึ่งการเลือกข้อมูลสามารถทำได้ 2 แบบหลักๆ คือ
1.เลือกคอลัมน์ทั้งหมด
SELECT * FROM table_name
2.เลือกเฉพาะบางคอลัมน์
SELECT column_name1, column_name2, column_name3 FROM table_name
ตัวอย่างโค้ดเลือกข้อมูล MySQLi (Object-Oriented)
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) { die("Connection failed: " . $conn->connect_error); } $sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = $conn->query($sql); if ($result->num_rows > 0) { // output data of each row while($row = $result->fetch_assoc()) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 results"; } $conn->close(); ?>
ไฟล์ที่ 1 เลือกข้อมูล MySQLi (Object-Oriented)
อธิบายโค้ดไฟล์ที่ 1 แบบเป็นขั้นตอน
- เป็นการเลือกข้อมูลเฉพาะคอลัมน์ id, firstname, lastname จากตาราง MyGuests
- จากนั้นฟังก์ชั่น num_rows() เช็คจำนวนแถวข้อมูลว่ามากกว่า 0 หรือไม่ ถ้าหากว่าจำนวนแถวข้อมูลมากกว่า 0
- วนซ้ำข้อมูลด้วย while() และใช้ฟังก์ชั่น fetch_assoc() พักข้อมูลเก็บไว้ที่ตัวแปร $row แล้วทำการแสดงผลข้อมูลในระหว่างรอบของการวนซ้ำข้อมูล
ตัวอย่างโค้ดเลือกข้อมูล MySQLi Procedural
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // Create connection $conn = mysqli_connect($servername, $username, $password, $dbname); // Check connection if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } $sql = "SELECT id, firstname, lastname FROM MyGuests"; $result = mysqli_query($conn, $sql); if (mysqli_num_rows($result) > 0) { // output data of each row while($row = mysqli_fetch_assoc($result)) { echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>"; } } else { echo "0 results"; } mysqli_close($conn); ?>
ไฟล์ที่ 2 เลือกข้อมูล MySQLi (Procedural)
ตัวอย่างโค้ดเลือกข้อมูล PDO
<?php echo "<table style='border: solid 1px black;'>"; echo "<tr><th>Id</th><th>Firstname</th><th>Lastname</th></tr>"; class TableRows extends RecursiveIteratorIterator { function __construct($it) { parent::__construct($it, self::LEAVES_ONLY); } function current() { return "<td style='width:150px;border:1px solid black;'>" . parent::current(). "</td>"; } function beginChildren() { echo "<tr>"; } function endChildren() { echo "</tr>" . "\n"; } } $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDBPDO"; try { $conn = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); $stmt = $conn->prepare("SELECT id, firstname, lastname FROM MyGuests"); $stmt->execute(); // set the resulting array to associative $result = $stmt->setFetchMode(PDO::FETCH_ASSOC); foreach(new TableRows(new RecursiveArrayIterator($stmt->fetchAll())) as $k=>$v) { echo $v; } } catch(PDOException $e) { echo "Error: " . $e->getMessage(); } $conn = null; echo "</table>"; ?>
ไฟล์ที่ 3 เลือกข้อมูล PDO
การจำกัดการเรียกใช้ข้อมูล Limit Data Select
Limit Data Select หมายถึงการจำกัดการเรียกข้อมูลมาแสดงผล ซึ่งจะมีประโยชน์อย่างยิ่งกับงานในลักษณะที่ข้อมูลมีปริมาณมากๆ และต้องการให้ระบบทำงานอย่างมีประสิทธิภาพ ถ้าหากไม่มีการจำกัดการเรียกใช้งานข้อมูลในแต่ละครั้งจะทำให้ประสิทธิภาพในการทำงานลดลง เพราะการแสดงผลข้อมูลทีละมากๆจะทำให้การประมวลผลช้าลง
ตัวอย่าง SQL ในการจำกัดการเรียกข้อมูล ทีละ 10 แถว (ระเบียน , record)
SELECT * FROM table_name LIMIT 10;
จากตัวอย่างด้านบน SQL จะเรียกข้อมูลเพียง 10 แถวแรกเท่านั้น
id |
1 |
2 |
3 |
4 |
5 |
6 |
7 |
8 |
9 |
10 |
ตัวอย่างตาราง ผลลัพธ์ที่ 1
หากต้องการ เรียกข้อมูลเริ่มต้นที่แถว 16 สามารถทำได้ดังต่อไปนี้
SELECT * FROM table_name LIMIT 10 OFFSET 15;
หรือใช้รูปแบบดังต่อไปนี้ ซึ่งมีความหมายเหมือนกันกับ SQL ด้านบน เพียงแต่สลับตำแหน่งหน้า-หลัง ระหว่าง LIMIT กับ OFFSET เท่านั้น
SELECT * FROM table_name LIMIT 15,10;
id |
16 |
17 |
18 |
19 |
20 |
21 |
22 |
23 |
24 |
25 |
ตัวอย่างตาราง ผลลัพธ์ที่ 2 และ 3