บทช่วยสอนPHP

PHP HOME แนะนำ PHP การติดตั้ง PHP PHP ไวยากรณ์ ความคิดเห็น PHP ตัวแปร PHP PHP Echo / พิมพ์ ประเภทข้อมูล PHP PHP Strings หมายเลข PHP PHP คณิตศาสตร์ ค่าคงที่ PHP ตัวดำเนินการ PHP PHP If...Else...Elseif PHP Switch PHP Loops ฟังก์ชัน PHP PHP Arrays PHP Superglobals PHP RegEx

แบบฟอร์มPHP

การจัดการแบบฟอร์ม PHP การตรวจสอบแบบฟอร์ม PHP ต้องใช้แบบฟอร์ม PHP URL แบบฟอร์ม PHP/อีเมล แบบฟอร์ม PHP เสร็จสมบูรณ์

PHPขั้นสูง

วันที่และเวลา PHP รวม PHP การจัดการไฟล์ PHP ไฟล์ PHP เปิด/อ่าน สร้าง/เขียนไฟล์ PHP อัพโหลดไฟล์ PHP คุกกี้ PHP PHP Sessions ตัวกรอง PHP ตัวกรอง PHP ขั้นสูง ฟังก์ชันเรียกกลับของ PHP PHP JSON ข้อยกเว้น PHP

PHP OOP

PHP OOP คืออะไร คลาส PHP/วัตถุ ตัวสร้าง PHP PHP Destructor PHP Access Modifiers PHP Inheritance ค่าคงที่ PHP PHP Abstract Classes อินเทอร์เฟซ PHP PHP ลักษณะ PHP Static Methods PHP คุณสมบัติคงที่ PHP เนมสเปซ PHP Iterables

ฐานข้อมูลMySQL

ฐานข้อมูล MySQL MySQL Connect MySQL สร้าง DB MySQL สร้างตาราง MySQL แทรกข้อมูล MySQL รับ ID ล่าสุด MySQL แทรกหลายรายการ MySQL ที่เตรียมไว้ MySQL Select Data MySQL Where MySQL สั่งซื้อโดย MySQL ลบข้อมูล ข้อมูลอัพเดต MySQL MySQL Limit Data

PHP XML

PHP XML Parsers PHP SimpleXML Parser PHP SimpleXML - รับ PHP XML Expat PHP XML DOM

PHP - AJAX

บทนำ AJAX AJAX PHP ฐานข้อมูล AJAX AJAX XML AJAX ค้นหาสด AJAX โพล

ตัวอย่างPHP

ตัวอย่าง PHP PHP คอมไพเลอร์ แบบทดสอบ PHP แบบฝึกหัด PHP ใบรับรอง PHP

ข้อมูลอ้างอิงPHP

ภาพรวม PHP PHP Array ปฏิทิน PHP PHP วันที่ ไดเรกทอรี PHP ข้อผิดพลาด PHP ข้อยกเว้น PHP ระบบไฟล์ PHP ตัวกรอง PHP PHP FTP PHP JSON คีย์เวิร์ด PHP PHP Libxml PHP Mail PHP คณิตศาสตร์ PHP เบ็ดเตล็ด PHP MySQLi เครือข่าย PHP การควบคุมเอาต์พุต PHP PHP RegEx PHP SimpleXML PHP Stream PHP String การจัดการตัวแปร PHP PHP XML Parser PHP Zip เขตเวลา PHP

PHP เชื่อมต่อกับ MySQL


PHP 5 และใหม่กว่าสามารถทำงานกับฐานข้อมูล MySQL โดยใช้:

  • ส่วนขยาย MySQLi ("i" หมายถึงการปรับปรุง)
  • PDO (อ็อบเจ็กต์ข้อมูล PHP)

PHP เวอร์ชันก่อนหน้าใช้ส่วนขยาย MySQL อย่างไรก็ตาม ส่วนขยายนี้เลิกใช้งานแล้วในปี 2555


ฉันควรใช้ MySQLi หรือ PDO หรือไม่

หากคุณต้องการคำตอบสั้น ๆ มันจะเป็น "สิ่งที่คุณต้องการ"

ทั้ง MySQLi และ PDO มีข้อดีดังนี้:

PDO จะทำงานบนระบบฐานข้อมูลที่แตกต่างกัน 12 ระบบ ในขณะที่ MySQLi จะทำงานกับฐานข้อมูล MySQL เท่านั้น

ดังนั้น หากคุณต้องเปลี่ยนโปรเจ็กต์ของคุณเพื่อใช้ฐานข้อมูลอื่น PDO จะทำให้กระบวนการนี้ง่ายขึ้น คุณต้องเปลี่ยนสตริงการเชื่อมต่อและแบบสอบถามเพียงเล็กน้อยเท่านั้น ด้วย MySQLi คุณจะต้องเขียนโค้ดใหม่ทั้งหมด - รวมการสืบค้นข้อมูล

ทั้งสองเป็นแบบเชิงวัตถุ แต่ MySQLi ยังมี API ขั้นตอนอีกด้วย

ทั้งสองรองรับงบที่เตรียมไว้ คำสั่งที่เตรียมไว้จะป้องกันการฉีด SQL และมีความสำคัญมากสำหรับการรักษาความปลอดภัยเว็บแอปพลิเคชัน


ตัวอย่าง MySQL ในทั้ง MySQLi และ PDO Syntax

ในบทนี้และในบทต่อๆ ไป เราสาธิตวิธีการทำงานกับ PHP และ MySQL สามวิธี:

  • MySQLi (เชิงวัตถุ)
  • MySQLi (ขั้นตอน)
  • PDO

การติดตั้ง MySQLi

สำหรับ Linux และ Windows: ในกรณีส่วนใหญ่ส่วนขยาย MySQLi จะถูกติดตั้งโดยอัตโนมัติ เมื่อติดตั้งแพ็คเกจ php5 mysql

สำหรับรายละเอียดการติดตั้ง ไปที่: http://php.net/manual/en/mysqli.installation.php


การติดตั้ง PDO

สำหรับรายละเอียดการติดตั้ง ไปที่: http://php.net/manual/en/pdo.installation.php



เปิดการเชื่อมต่อกับ MySQL

ก่อนที่เราจะสามารถเข้าถึงข้อมูลในฐานข้อมูล MySQL เราต้องสามารถเชื่อมต่อกับเซิร์ฟเวอร์ได้:

ตัวอย่าง (MySQLi Object-Oriented)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = new mysqli($servername, $username, $password);

// Check connection
if ($conn->connect_error) {
  die("Connection failed: " . $conn->connect_error);
}
echo "Connected successfully";
?>

หมายเหตุเกี่ยวกับตัวอย่างเชิงวัตถุด้านบน:

$connect_error ใช้งานไม่ได้จนถึง PHP 5.2.9 และ 5.3.0 หากคุณต้องการให้แน่ใจว่าเข้ากันได้กับ PHP เวอร์ชันก่อนหน้า 5.2.9 และ 5.3.0 ให้ใช้รหัสต่อไปนี้แทน:

// ตรวจสอบการเชื่อมต่อ
ว่า (mysqli_connect_error()) {
  die("การเชื่อมต่อฐานข้อมูลล้มเหลว: " . mysqli_connect_error());
}

ตัวอย่าง (ขั้นตอนของ MySQL)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

// Create connection
$conn = mysqli_connect($servername, $username, $password);

// Check connection
if (!$conn) {
  die("Connection failed: " . mysqli_connect_error());
}
echo "Connected successfully";
?>

ตัวอย่าง (PDO)

<?php
$servername = "localhost";
$username = "username";
$password = "password";

try {
  $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password);
  // set the PDO error mode to exception
  $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
  echo "Connected successfully";
} catch(PDOException $e) {
  echo "Connection failed: " . $e->getMessage();
}
?>

หมายเหตุ:ในตัวอย่าง PDO ด้านบน เราได้ ระบุฐานข้อมูล (myDB)ด้วย PDO ต้องการฐานข้อมูลที่ถูกต้องเพื่อเชื่อมต่อ หากไม่มีการระบุฐานข้อมูล ข้อยกเว้นจะถูกส่งออกไป

เคล็ดลับ:ประโยชน์ที่ยอดเยี่ยมของ PDO คือมีคลาสข้อยกเว้นเพื่อจัดการกับปัญหาที่อาจเกิดขึ้นในการสืบค้นฐานข้อมูลของเรา หากมีข้อยกเว้นเกิดขึ้นภายในบล็อก try{ } สคริปต์จะหยุดดำเนินการและไหลโดยตรงไปยังบล็อกแรก catch(){ }


ปิดการเชื่อมต่อ

การเชื่อมต่อจะถูกปิดโดยอัตโนมัติเมื่อสคริปต์สิ้นสุดลง หากต้องการปิดการเชื่อมต่อก่อน ให้ใช้สิ่งต่อไปนี้:

MySQLi เชิงวัตถุ:

$conn->close();

ขั้นตอน MySQLi:

mysqli_close($conn);

พีดีโอ:

$conn = null;