PHP連接MySQL有三種方式 : MySQL、MySQLi、PDO
因為MySQL連接方式在新版7.0已經不支援,所以不建議使用
使用這個函數phpversion(),可以知道你的PHP版本。
(1) 連接方式 : MySQLi Object-Oriented (物件導向的MySQLi)
<?php
$host = 'localhost';
$dbuser ='user_name';
$dbpassword = 'user_password';
$dbname = 'db_name';
// Create connection
$conn = new mysqli($host, $dbuser, $dbpassword);
// Check connection
if ($conn->connect_error) {
die("連接失敗 : " . $conn->connect_error);
}
echo "連接成功";
?>
程式說明 :
以上藍色部分需要改成你自己的資料。
mysqli ($連接主機, $使用者帳號, $使用者密碼) 用來建立MySQL連線
使用 $conn = new mysqli($host, $dbuser, $dbpassword); 之後
就可以呼叫 $conn->connect_error ,若連接錯誤就輸出錯誤訊息
(2) 連接方式 : MySQLi Procedural (程序式的MySQLi)
<?php
$host = 'localhost';
$dbuser ='user_name';
$dbpassword = 'user_password';
$dbname = 'db_name';
// Create connection
$conn = mysqli_connect($host, $dbuser, $dbpassword);
// Check connection
if (!$conn) {
die("連接失敗 : " . mysqli_connect_error());
}
echo "連接成功";
?>
程式說明 :
以上藍色部分需要改成你自己的資料。
mysqli_connect($連接主機, $使用者帳號, $使用者密碼) 用來建立MySQL連線
使用 $conn = mysqli_connect($host, $dbuser, $dbpassword);
就可以呼叫 mysqli_connect_error(),若連接錯誤就輸出錯誤訊息
(3) 連接方式 : PDO
<?php
$host = 'localhost';
$dbuser ='user_name';
$dbpassword = 'user_password';
$dbname = 'db_name';
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $dbuser, $dbpassword);
// set the PDO error mode to exception
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo "連接成功";
} catch(PDOException $e) {
echo "連接失敗 : " . $e->getMessage();
}
?>
程式說明 :
以上藍色部分需要改成你自己的資料。
$conn = new PDO("mysql:host=$連接主機;dbname=$資料庫名稱", $使用者帳戶, $使用者密碼);
再來抓取資料
(4) 以 MySQLi Object-Oriented 連接方式抓取資料
<?php
// Create connection
$conn = new mysqli($host, $dbuser, $dbpassword, $dbname);
// Check connection
if ($conn->connect_error) {
die("連接失敗 : " . $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 "沒有資料";
}
$conn->close();
?>
$host = 'localhost';
$dbuser ='user_name';
$dbpassword = 'user_password';
$dbname = 'db_name';
// Create connection
$conn = new mysqli($host, $dbuser, $dbpassword, $dbname);
// Check connection
if ($conn->connect_error) {
die("連接失敗 : " . $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 "沒有資料";
}
$conn->close();
?>
以上藍色部分需要改成你自己的資料。
(5) 以 MySQLi Procedural 連接方式抓取資料
<?php
// Create connection
$conn = mysqli_connect($host, $dbuser, $dbpassword, $dbname);
// Check connection
if (!$conn) {
die("連接失敗 : " . 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 "沒有資料";
}
mysqli_close($conn);
?>
$host = 'localhost';
$dbuser ='user_name';
$dbpassword = 'user_password';
$dbname = 'db_name';
$conn = mysqli_connect($host, $dbuser, $dbpassword, $dbname);
// Check connection
if (!$conn) {
die("連接失敗 : " . 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 "沒有資料";
}
mysqli_close($conn);
?>
以上藍色部分需要改成你自己的資料。
(6) 以 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";
}
}
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $dbuser, $dbpassword);
$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>";
?>
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";
}
}
$host = 'localhost';
$dbuser ='user_name';
$dbpassword = 'user_password';
$dbname = 'db_name';
try {
$conn = new PDO("mysql:host=$host;dbname=$dbname", $dbuser, $dbpassword);
$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>";
?>
以上藍色部分需要改成你自己的資料。
(7) 實際練習 ~ 建立 config.php
<?php
$host = '主機名稱';
$dbuser ='使用者名稱';
$dbpassword = '使用者密碼';
$dbname = '資料庫名稱';
// Create connection
$conn = new mysqli($host, $dbuser, $dbpassword, $dbname);
// Check connection
if ($conn->connect_error) {
die("連接失敗 : " . $conn->connect_error);
}
?>
以上藍色部分需要改成你自己的資料。
(8) 建立 testmysql.php 抓取資料
<?php
// Include config file
require_once "config.php";
$sql = "SELECT * FROM testdb";
$result = $conn->query($sql);
if (!$result) { die($conn->error); }
if ($result->num_rows > 0) {
// output data of each row
while($row = $result->fetch_assoc()) {
echo $row["testfield01"];
echo "<br>".$row["testfield02"];
}
}
$conn->close();
?>
以上藍色部分需要改成你自己的資料。
(9) 進行新增修改刪除
如果
$sql = "INSERT INTO .....";
就可以執行 $result = $conn->query($sql);
並輸出執行結果 echo mysqli_error($conn);
替換不同的 $sql 就能執行新增、修改、刪除。
參考資料 :
0 留言