PHP数据库

261 阅读2分钟

简介

1. MySQL

  • MySQL 是最流行的开源数据库服务器
  • MySQL 是一种数据库。数据库定义了存储信息的结构
  • 在数据库中,存在着一些表。类似 HTML 表格,数据库表含有行、列以及单元。
  • MySQL 数据库通常是通过 PHP 来使用的

2. 数据库表

  • 数据库通常包含一个或多个表。
  • 每个表都一个名称(比如 "Customers" 或 "Orders")。
  • 每个表包含带有数据的记录(行)

3. 查询

  • 查询是一种询问或请求
  • 通过 MySQL,我们可以向数据库查询具体的信息,并得到返回的记录集

MySQL Connect 连接数据库

1. 连接到一个 MySQL 数据库

  • 在您能够访问并处理数据库中的数据之前,您必须创建到达数据库的连接。
  • 在 PHP 中,这个任务通过 mysql_connect() 函数完成
语法:
mysql_connect(servername,username,password);

servername	可选。规定要连接的服务器。默认是 "localhost:3306"。
username	可选。规定登录所使用的用户名。默认值是拥有服务器进程的用户的名称。
password	可选。规定登录所用的密码。默认是 ""。

例子:创建数据库的连接
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// some code

?>

2. 关闭连接

  • 脚本一结束,就会关闭连接。如需提前关闭连接,请使用 mysql_close() 函数
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// some code

mysql_close($con);
?>

PHP Create 创建数据库和表

  • 数据库存有一个或多个表

1. 创建数据库

  • CREATE DATABASE 语句用于在 MySQL 中创建数据库
CREATE DATABASE database_name
  • 为了让 PHP 执行上面的语句,我们必须使用 mysql_query() 函数。此函数用于向 MySQL 连接发送查询或命令
创建一个名为 my_db的数据库
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

if (mysql_query("CREATE DATABASE my_db",$con))
  {
  echo "Database created";
  }
else
  {
  echo "Error creating database: " . mysql_error();
  }

mysql_close($con);
?>

2. 创建表

  • CREATE TABLE 用于在 MySQL 中创建数据库表
CREATE TABLE table_name
(
  column_name1 data_type,
  column_name2 data_type,
  column_name3 data_type,
  .......
)
  • 下面的例子展示了如何创建一个名为 "Persons" 的表,此表有三列。列名是 "FirstName", "LastName" 以及 "Age"
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

// Create database
if (mysql_query("CREATE DATABASE my_db",$con))
  {
  echo "Database created";
  }
else
  {
  echo "Error creating database: " . mysql_error();
  }

// Create table in my_db database
在创建表之前,必须首先选择数据库。通过 mysql_select_db() 函数选取数据库
mysql_select_db("my_db", $con);

$sql = "CREATE TABLE Persons 
(
  当创建 varchar 类型的数据库字段时,必须规定该字段的最大长度,例如:varchar(15)
  FirstName varchar(15),
  LastName varchar(15),
  Age int
)";
mysql_query($sql,$con);

mysql_close($con);
?>

3. MySQL 数据类型

4. 主键和自动递增字段

  • 每个表都应有一个主键字段。
  • 主键用于对表中的行进行唯一标识。每个主键值在表中必须是唯一的。此外,主键字段不能为空,这是由于数据库引擎需要一个值来对记录进行定位。
  • 主键字段永远要被编入索引。这条规则没有例外。你必须对主键字段进行索引,这样数据库引擎才能快速定位给予该键值的行。
  • 下面的例子把 personID 字段设置为主键字段。主键字段通常是 ID 号,且通常使用 AUTO_INCREMENT 设置。AUTO_INCREMENT 会在新记录被添加时逐一增加该字段的值。要确保主键字段不为空,我们必须向该字段添加 NOT NULL 设置。
$sql = "CREATE TABLE Persons 
(
设置主键
personID int NOT NULL AUTO_INCREMENT, 
PRIMARY KEY(personID),

FirstName varchar(15),
LastName varchar(15),
Age int
)";

mysql_query($sql,$con);

PHP MySQL Insert Into

1. 向数据库表插入数据

  • INSERT INTO 语句用于向数据库表 添加新记录
  • SQL 语句对大小写不敏感。INSERT INTO 与 insert into 相同
INSERT INTO table_name
VALUES (value1, value2,....)

还可以规定希望在其中插入数据的列:
INSERT INTO table_name (column1, column2,...)
VALUES (value1, value2,....)
<?php
$con = mysql_connect("localhost","peter","abc123"); 连接数据库
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("my_db", $con); // 选择数据库

插入数据
mysql_query("INSERT INTO Persons (FirstName, LastName, Age) 
VALUES ('Peter', 'Griffin', '35')");

mysql_query("INSERT INTO Persons (FirstName, LastName, Age) 
VALUES ('Glenn', 'Quagmire', '33')");

mysql_close($con);
?>

2. 把来自表单的数据插入数据库

  • 我们创建一个 HTML 表单,这个表单可把新记录插入 "Persons" 表
<html>
<body>

<form action="insert.php" method="post">
    Firstname: <input type="text" name="firstname" />
    Lastname: <input type="text" name="lastname" />
    Age: <input type="text" name="age" />
    <input type="submit" />
</form>

</body>
</html>
  • 当用户点击上例中 HTML 表单中的提交按钮时,表单数据被发送到 "insert.php"
  • "insert.php" 文件连接数据库,并通过 $_POST 变量从表单取回值。然后,mysql_query() 函数执行 INSERT INTO 语句,一条新的记录会添加到数据库表中
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("my_db", $con);

$sql="INSERT INTO Persons (FirstName, LastName, Age)
VALUES
('$_POST[firstname]','$_POST[lastname]','$_POST[age]')";

if (!mysql_query($sql,$con))
  {
  die('Error: ' . mysql_error());
  }
echo "1 record added";

mysql_close($con)
?>

PHP MySQL Select

1. 从数据库表中选取数据

  • SELECT 语句用于从数据库中选取数据
SELECT column_name(s) FROM table_name
  • mysql_query() 函数用于向 MySQL 发送查询或命令
  • mysql_fetch_array() 函数的调用都会返回记录集中的下一行
<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT * FROM Persons");

while($row = mysql_fetch_array($result))
  {
  echo $row['FirstName'] . " " . $row['LastName'];
  echo "<br />";
  }

mysql_close($con);
?>

2. 在 HTML 表格中显示结果

<?php
$con = mysql_connect("localhost","peter","abc123");
if (!$con)
  {
  die('Could not connect: ' . mysql_error());
  }

mysql_select_db("my_db", $con);

$result = mysql_query("SELECT * FROM Persons");

echo "<table border='1'>
<tr>
<th>Firstname</th>
<th>Lastname</th>
</tr>";

while($row = mysql_fetch_array($result))
  {
  echo "<tr>";
  echo "<td>" . $row['FirstName'] . "</td>";
  echo "<td>" . $row['LastName'] . "</td>";
  echo "</tr>";
  }
echo "</table>";

mysql_close($con);
?>

PHP MySQL Where 子句

  • 如需选取匹配指定条件的数据,请向 SELECT 语句添加 WHERE 子句
SELECT column FROM table
WHERE column operator value

  • 从 "Persons" 表中选取所有 FirstName='Peter' 的行
$result = mysql_query("SELECT * FROM Persons
WHERE FirstName='Peter'");

PHP MySQL Order By 关键词

1. ORDER BY 关键词

  • ORDER BY 关键词用于对记录集中的数据进行排序
SELECT column_name(s) FROM table_name
ORDER BY column_name

选取 "Persons" 表中的存储的所有数据,并根据 "Age" 列对结果进行排序
$result = mysql_query("SELECT * FROM Persons ORDER BY age");

2. 升序(asc)或降序(desc)的排序,默认是升序

  • 如果您使用 ORDER BY 关键词,记录集的排序顺序默认是升序(1 在 9 之前,"a" 在 "p" 之前)。
  • 使用 DESC 关键词来设定降序排序(9 在 1 之前,"p" 在 "a" 之前)
SELECT column_name(s) FROM table_name
ORDER BY column_name DESC

3. 根据两列进行排序

  • 可以根据多个列进行排序。当按照多个列进行排序时,只有第一列相同时才使用第二列
SELECT column_name(s) FROM table_name
ORDER BY column_name1, column_name2

PHP MySQL Update

  • UPDATE 语句用于中修改数据库表中的数据
UPDATE table_name
SET column_name = new_value
WHERE column_name = some_value

PHP MySQL Delete From

  • DELETE FROM 语句用于从数据库表中删除行
DELETE FROM table_name
WHERE column_name = some_value

PHP Database ODBC

  • ODBC 是一种应用程序编程接口(Application Programming Interface,API),使我们有能力连接到某个数据源(比如一个 MS Access 数据库)

1. 创建 ODBC 连接

  • 通过一个 ODBC 连接,您可以连接到您的网络中的任何计算机上的任何数据库,只要 ODBC 连接是可用的
  • 下面是创建到达 MS Access 数据的 ODBC 连接的方法:
1. 在控制面板中打开管理工具
2. 双击其中的数据源 (ODBC) 图标
3. 选择系统 DSN 选项卡
4. 点击系统 DSN 选项卡中的“添加”按钮
5. 选择 Microsoft Access Driver。点击完成。
6.  在下一个界面,点击“选择”来定位数据库。
7. 为这个数据库取一个数据源名 (DSN)。
8. 点击确定。

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); 

5. 关闭 ODBC 连接

  • odbc_close()函数用于关闭 ODBC 连接
odbc_close($conn);
  • 展示了如何首先创建一个数据库连接,然后是结果集,然后在 HTML 表格中显示数据
<html>
<body>

<?php
$conn=odbc_connect('northwind','','');
if (!$conn)
  {exit("Connection Failed: " . $conn);}
$sql="SELECT * FROM customers";
$rs=odbc_exec($conn,$sql);
if (!$rs)
  {exit("Error in 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>