[Node.js] 09 - Connect with Databasephp
SQL語句須要複習一遍:http://www.runoob.com/sql/sql-tutorial.htmlweb
PHP 5 及以上版本建議使用如下方式鏈接 MySQL :sql
<?php $servername = "localhost"; $username = "username"; $password = "password"; // 建立鏈接 $conn = new mysqli($servername, $username, $password); // 檢測鏈接 if ($conn->connect_error) { die("鏈接失敗: " . $conn->connect_error); } echo "鏈接成功"; ?>
# 關閉鏈接
$conn->close();
<?php $servername = "localhost"; $username = "username"; $password = "password"; // 建立鏈接 $conn = mysqli_connect($servername, $username, $password); // 檢測鏈接 if (!$conn) { die("Connection failed: " . mysqli_connect_error()); } echo "鏈接成功"; ?>
# 關閉鏈接
mysqli_close($conn);
<?php $servername = "localhost"; $username = "username"; $password = "password"; try { $conn = new PDO("mysql:host=$servername;dbname=myDB", $username, $password); echo "鏈接成功"; } catch(PDOException $e) { echo $e->getMessage(); } ?>
# 關閉鏈接
$conn = null;
try{ //解析config.ini文件,獲取數據庫鏈接參數 $config = parse_ini_file(realpath(dirname(__FILE__) . '/config/config.ini'));
//對mysqli類進行實例化 $mysqli = new mysqli($config['host'], $config['username'], $config['password'], $config['dbname']);
if(mysqli_connect_errno()){ // 判斷是否成功鏈接上MySQL數據庫 throw new Exception('數據庫鏈接錯誤!'); // 若是鏈接錯誤,則拋出異常 }else{ echo '數據庫鏈接成功!'; // 打印鏈接成功的提示 } }catch (Exception $e){ // 捕獲異常 echo $e->getMessage(); // 打印異常信息 }
<?php $servername = "localhost"; $username = "username"; $password = "password"; // 建立鏈接 $conn = new mysqli($servername, $username, $password);
// 檢測鏈接 if ($conn->connect_error) { die("鏈接失敗: " . $conn->connect_error); } // 建立數據庫 $sql = "CREATE DATABASE myDB"; if ($conn->query($sql) === TRUE) { echo "數據庫建立成功"; } else { echo "Error creating database: " . $conn->error; } $conn->close(); ?>
Goto: http://www.runoob.com/php/php-mysql-create.html數據庫
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 建立鏈接 $conn = new mysqli($servername, $username, $password, $dbname);
// 檢測鏈接 if ($conn->connect_error) { die("鏈接失敗: " . $conn->connect_error); } --------------------------------------------------------------- // 使用 sql 建立數據表 $sql = "CREATE TABLE MyGuests ( id INT(6) UNSIGNED AUTO_INCREMENT PRIMARY KEY, firstname VARCHAR(30) NOT NULL, lastname VARCHAR(30) NOT NULL, email VARCHAR(50), reg_date TIMESTAMP )"; if ($conn->query($sql) === TRUE) { echo "Table MyGuests created successfully"; } else { echo "建立數據表錯誤: " . $conn->error; } $conn->close(); ?>
Goto: PHP MySQL 讀取數據編程
mysql> set names utf8; mysql> SELECT name FROM websites; +---------------+ | name | +---------------+ | Google | | 淘寶 | | 菜鳥教程 | | 微博 | | Facebook | | stackoverflow | +---------------+ 6 rows in set (0.00 sec)
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 建立鏈接 $conn = new mysqli($servername, $username, $password, $dbname);
// 檢測鏈接 if ($conn->connect_error) { die("鏈接失敗: " . $conn->connect_error); } $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com')"; if ($conn->query($sql) === TRUE) { echo "新記錄插入成功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?>
注意變量sql後面的"點「。json
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 建立連接 $conn = new mysqli($servername, $username, $password, $dbname);
// 檢查連接 if ($conn->connect_error) { die("鏈接失敗: " . $conn->connect_error); } $sql = "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('John', 'Doe', 'john@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Mary', 'Moe', 'mary@example.com');"; $sql .= "INSERT INTO MyGuests (firstname, lastname, email) VALUES ('Julie', 'Dooley', 'julie@example.com')"; if ($conn->multi_query($sql) === TRUE) { echo "新記錄插入成功"; } else { echo "Error: " . $sql . "<br>" . $conn->error; } $conn->close(); ?>
[有返回值] 從 "Persons" 表中選取全部 FirstName='Peter' 的行:數組
<?php $con=mysqli_connect("localhost","username","password","database");
// 檢測鏈接 if (mysqli_connect_errno()) { echo "鏈接失敗: " . mysqli_connect_error(); } $result = mysqli_query($con, "SELECT * FROM Persons WHERE FirstName='Peter'"); while($row = mysqli_fetch_array($result)) { echo $row['FirstName'] . " " . $row['LastName']; echo "<br>"; } ?>
<?php $con=mysqli_connect("localhost","username","password","database");
// 檢測鏈接 if (mysqli_connect_errno()) { echo "鏈接失敗: " . mysqli_connect_error(); } $result = mysqli_query($con, "SELECT * FROM Persons ORDER BY age"); while($row = mysqli_fetch_array($result)) { echo $row['FirstName']; echo " " . $row['LastName']; echo " " . $row['Age']; echo "<br>"; } mysqli_close($con); ?>
<?php $con=mysqli_connect("localhost","username","password","database");
// 檢測鏈接 if (mysqli_connect_errno()) { echo "鏈接失敗: " . mysqli_connect_error(); } mysqli_query($con,"UPDATE Persons SET Age=36 WHERE FirstName='Peter' AND LastName='Griffin'"); mysqli_close($con); ?>
<?php $con=mysqli_connect("localhost","username","password","database");
// 檢測鏈接 if (mysqli_connect_errno()) { echo "鏈接失敗: " . mysqli_connect_error(); } mysqli_query($con,"DELETE FROM Persons WHERE LastName='Griffin'"); mysqli_close($con); ?>
能夠經過建立代碼塊實現更簡單的讀取和管理。網絡
Goto: http://www.runoob.com/php/php-mysql-insert-multiple.html
<?php $servername = "localhost"; $username = "username"; $password = "password"; $dbname = "myDB"; // 建立鏈接 $conn = new mysqli($servername, $username, $password, $dbname);
// 檢測鏈接 if ($conn->connect_error) { die("鏈接失敗: " . $conn->connect_error);
} else { $sql = "INSERT INTO MyGuests(firstname, lastname, email) VALUES(?, ?, ?)"; // 爲 mysqli_stmt_prepare() 初始化 statement 對象 $stmt = mysqli_stmt_init($conn); //預處理語句 if (mysqli_stmt_prepare($stmt, $sql)) { // 綁定參數 mysqli_stmt_bind_param($stmt, 'sss', $firstname, $lastname, $email); // 設置參數並執行 $firstname = 'John'; $lastname = 'Doe'; $email = 'john@example.com'; mysqli_stmt_execute($stmt); $firstname = 'Mary'; $lastname = 'Moe'; $email = 'mary@example.com'; mysqli_stmt_execute($stmt); $firstname = 'Julie'; $lastname = 'Dooley'; $email = 'julie@example.com'; mysqli_stmt_execute($stmt); } } ?>
Goto: PHP MySQL 預處理語句
/* IMPLEMENT */
ODBC 是一種應用程序編程接口(Application Programming Interface,API),使咱們有能力鏈接到某個數據源(好比一個 MS Access 數據庫)。
經過一個 ODBC 鏈接,您能夠鏈接到您的網絡中的任何計算機上的任何數據庫,只要 ODBC 鏈接是可用的。
<html> <body> <?php $conn=odbc_connect('northwind','',''); if (!$conn) { exit("鏈接失敗: " . $conn); } $sql="SELECT * FROM customers"; $rs=odbc_exec($conn,$sql); if (!$rs) { exit("SQL 語句錯誤"); }
echo "<table><tr>"; echo "<th>Companyname</th>"; echo "<th>Contactname</th></tr>"; while (odbc_fetch_row($rs)) { $compname=odbc_result($rs,"CompanyName"); $conname=odbc_result($rs,"ContactName"); echo "<tr><td>$compname</td>"; echo "<td>$conname</td></tr>"; }
odbc_close($conn); echo "</table>"; ?> </body> </html>
json_encode | 對變量進行 JSON 編碼 |
json_decode | 對 JSON 格式的字符串進行解碼,轉換爲 PHP 變量 |
json_last_error | 返回最後發生的錯誤 |
<?php $arr = array('a' => 1, 'b' => 2, 'c' => 3, 'd' => 4, 'e' => 5); echo json_encode($arr); ?>
Array ----> Json
{"a":1,"b":2,"c":3,"d":4,"e":5}
<?php class Emp { public $name = ""; public $hobbies = ""; public $birthdate = ""; } $e = new Emp(); $e->name = "sachin"; $e->hobbies = "sports"; $e->birthdate = date('m/d/Y h:i:s a', "8/5/1974 12:20:03 p"); $e->birthdate = date('m/d/Y h:i:s a', strtotime("8/5/1974 12:20:03")); echo json_encode($e); ?>
對象 ----> Json {"name":"sachin","hobbies":"sports","birthdate":"08\/05\/1974 12:20:03 pm"}
<?php $json = '{"a":1,"b":2,"c":3,"d":4,"e":5}'; var_dump(json_decode($json)); // 返回對象,默認是false var_dump(json_decode($json, true)); // 返回數組 ?>
----------------------------------------------------------------
返回結果:
# 對象
object(stdClass)#1 (5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) }
# 數組 array(5) { ["a"] => int(1) ["b"] => int(2) ["c"] => int(3) ["d"] => int(4) ["e"] => int(5) }
Ref: XML 教程
如需讀取和更新 - 建立和處理 - 一個 XML 文檔,您須要 XML 解析器。
有兩種基本的 XML 解析器類型:
Expat 解析器是基於事件的解析器。
基於事件的解析器集中在 XML 文檔的內容,而不是它們的結構。
正由於如此,基於事件的解析器可以比基於樹的解析器更快地訪問數據。
Expat 是不檢查有效性的解析器,忽略任何 DTD。
做爲一款基於事件、非驗證的 XML 解析器,Expat 快速且輕巧,十分適合 PHP 的 Web 應用程序。
註釋:XML 文檔必須形式良好,不然 Expat 會生成錯誤。
[1] 解析的對象
<?xml version="1.0" encoding="ISO-8859-1"?> <note> <to>Tove</to> <from>Jani</from> <heading>Reminder</heading> <body>Don't forget me this weekend!</body> </note>
[2] 解析出的內容
-- Note --
To: Tove
From: Jani
Heading: Reminder
Message: Don't forget me this weekend!
[3] php 解析代碼
<?php // 1. Initialize the XML parser $parser=xml_parser_create(); // 2. Function to use at the start of an element function start($parser, $element_name, $element_attrs) { switch($element_name) { case "NOTE": echo "-- Note --<br>"; break; case "TO": echo "To: "; break; case "FROM": echo "From: "; break; case "HEADING": echo "Heading: "; break; case "BODY": echo "Message: "; } } //Function to use at the end of an element function stop($parser,$element_name) { echo "<br>"; } //Function to use when finding character data function char($parser,$data) { echo $data; } //Specify element handler xml_set_element_handler($parser,"start","stop"); //Specify data handler xml_set_character_data_handler($parser,"char"); //Open XML file $fp=fopen("test.xml","r"); //Read data while ($data=fread($fp,4096)) { xml_parse($parser,$data,feof($fp)) or die (sprintf("XML Error: %s at line %d", xml_error_string(xml_get_error_code($parser)), xml_get_current_line_number($parser))); } //Free the XML parser xml_parser_free($parser); ?>
工做原理:
W3C DOM 被分爲不一樣的部分(Core, XML 和 HTML)和不一樣的級別(DOM Level 1/2/3):
PHP SimpleXML 處理最普通的 XML 任務,其他的任務則交由其它擴展處理。
SimpleXML 是 PHP 5 中的新特性。
SimpleXML 擴展提供了一種獲取 XML 元素的名稱和文本的簡單方式。
與 DOM 或 Expat 解析器相比,SimpleXML 僅僅用幾行代碼就能夠從 XML 元素中讀取文本數據。