[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 元素中读取文本数据。