PHP学习笔记
PHP对数据库的相关操作(二)
一、PHP从Mysql数据库读取数据
语法:SELECT * FROM table_name (*代表全部字段,也可指定多个字段用,隔开)
例:从 myDB 数据库的 MyGuests 表读取了 id, firstname 和 lastname 列的数据并显示在页面上
1、面向过程
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = mysqli_connect($servername, $username, $password, $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) {
// 输出数据
while($row = mysqli_fetch_assoc($result)) {
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 结果";
}
mysqli_close($conn);
?>
2、面向对象
<?php
$servername = "localhost";
$username = "username";
$password = "password";
$dbname = "myDB";
// 创建连接
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
die("连接失败: " . $conn->connect_error);
}
$sql = "SELECT id, firstname, lastname FROM MyGuests";
$result = $conn->query($sql); //取出结果集并赋给复制给变量 $result
if ($result->num_rows > 0) { //判断返回的数据
// 输出数据
while($row = $result->fetch_assoc()) { //返回多条数据,将结合集放入到关联数组并循环输出
echo "id: " . $row["id"]. " - Name: " . $row["firstname"]. " " . $row["lastname"]. "<br>";
}
} else {
echo "0 结果";
}
$conn->close();
?>
3、PDO+预处理
例:选取了 MyGuests 表中的 id, firstname 和 lastname 字段,并放到 HTML 表格中
<?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();
// 设置结果集为关联数组
$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>";
?>
二、PHP Mysql中Where字句
语法:SELECT column_name(s)
FROM table_name
WHERE column_name operator value
<?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>";
}
?>
//输出:Peter Griffin
三、PHP Mysql中Order By
ORDER BY 关键词用于对记录集中的数据进行排序。ORDER BY 关键词默认对记录进行升序排序。降序排序,使用 DESC 关键字。
语法:SELECT column_name(s)
FROM table_name
ORDER BY column_name(s) ASC|DESC
例:选取 “Persons” 表中存储的所有数据,并根据 “Age” 列对结果进行排序
<?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);
?>
//输出:
//Glenn Quagmire 33
//Peter Griffin 35
四、PHP Mysql中Update
语法:UPDATE table_name
SET column1=value, column2=value2,…
WHERE some_column=some_value
<?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);
?>
更新后,“Persons” 表如下所示:
五、PHP Mysql中Delete
DELETE 语句用于从数据库表中删除行。
语法:DELETE FROM table_name
WHERE some_column = some_value
删除 “Persons” 表中所有 LastName=‘Griffin’ 的记录
<?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);
?>
删除后,“Persons” 表如下所示:
六、PHP 数据库ODBC
ODBC 是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源(比如一个 MS Access 数据库)。
1、创建ODBC连接
通过一个 ODBC 连接,您可以连接到您的网络中的任何计算机上的任何数据库,只要 ODBC 连接是可用的。
这是创建到达 MS Access 数据库的 ODBC 连接的方法:
①在控制面板中打开管理工具图标。
②双击其中的数据源(ODBC)图标。
③选择系统 DSN 选项卡。
④点击系统 DSN 选项卡中的添加。
⑤选择Microsoft Access Driver。点击完成。
⑥在下一个界面,点击选择来定位数据库。
⑦为数据库起一个数据源名(DSN)。
⑧点击确定。
请注意,必须在您的网站所在的计算机上完成这个配置。如果您的计算机上正在运行 Internet 信息服务(IIS),上面的指令将会生效,但是如果您的网站位于远程服务器,您必须拥有对该服务器的物理访问权限,或者请您的主机提供商为您建立 DSN。
2、连接到ODBC
odbc_connect() 函数用于连接到 ODBC 数据源。该函数有四个参数:数据源名、用户名、密码以及可选的指针类型。
odbc_exec() 函数用于执行 SQL 语句。
//创建了到达名为 northwind 的 DSN 的连接,没有用户名和密码。然后创建并执行一条 SQL 语句
$conn=odbc_connect('northwind','','');
$sql="SELECT * FROM customers";
$rs=odbc_exec($conn,$sql);
3、取回记录
odbc_fetch_row() 函数用于从结果集中返回记录。如果能够返回行,则函数返回 true,否则返回 false。
该函数有两个参数:ODBC 结果标识符和可选的行号
odbc_fetch_row($rs)
4、从记录中取回字段
odbc_result() 函数用于从记录中读取字段。该函数有两个参数:ODBC 结果标识符和字段编号或名称。
下面的代码行从记录中返回第一个字段的值
$compname=odbc_result($rs,1);
下面的代码行返回名为 “CompanyName” 的字段的值
$compname=odbc_result($rs,"CompanyName");
5、关闭ODBC连接
odbc_close() 函数用于关闭 ODBC 连接。
odbc_close($conn);
6、ODBC实例
首先创建一个数据库连接,接着创建一个结果集,然后在 HTML 表格中显示数据。
<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>