PHP 几乎可以使用所有的数据库软件,包括 Oracle 和 Sybase 但最常用的是免费的 MySQL 数据库。
你应该掌握几个了吗?
- 你已经通过 MySQL 教程了解 MySQL 基础知识。
- 下载并安装最新版本的 MySQL。
- 创建数据库用户 guest 密码 guest123。
- 如果您还没有创建了一个数据库,那么你需要用根用户和密码创建一个数据库。
我们本章分为以下部分
- Connecting to MySQL database
- 连接到 MySQL 数据库,学习如何使用 PHP 来打开和关闭一个 MySQL 数据库连接。
- Create MySQL Database Using PHP
- 使用 PHP 创建 MySQL 数据库,这部分解释了如何使用 PHP 创建 MySQL 数据库和表。
- Delete MySQL Database Using PHP
- 这部分解释了如何使用 PHP 删除 MySQL 数据库和表。
- Insert Data To MySQL Database
- 一旦你已经创建了数据库和表,那么你想向你的创建表插入你的数据。本阶段通过实际例子展示数据插入。
- Retrevieng Data From MySQL Database
- 如何使用 PHP 从数据库取数据,学习如何使用 PHP 从 MySQL 数据库获取记录。
- Using Paging through PHP
- 这一节解释如何分页显示查询结果,如何创建导航链接。
- Updating Data Into MySQL Database
- 这部分解释了如何使用 PHP 更新现有记录到 MySQL 数据库。
- Deleting Data From MySQL Database
- 这部分解释了如何使用 PHP 删除或清除 MySQL 数据库现有记录。
- Using PHP To Backup MySQL Database
- 为了 MySQL 数据库安全学习不同的方法要备份你的数据库。
MySQL数据库连接
打开数据库连接
PHP 提供了 mysql_connect() 函数打开一个数据库连接。此函数接受五个参数并返回一个 MySQL 成功连接标识符,如果执行失败将返回 FALSE。
语法:
1 |
connection mysql_connect(server,user,passwd,new_link,client_flag); |
参数 | 说明 |
---|---|
server | 可选——运行数据库服务器上的主机名。如果没有指定,默认值是localhost:3306。 用户名 密码 newlink |
user | 可选——访问数据库的用户名。如果没有指定,默认是用户拥有的服务器进程名称。 |
passwd | 可选——用户用密码访问数据库。如果没有指定,默认是空密码。 |
new_link | 可选。如果用同样的参数第二次调用 mysql_connect(),将不会建立新连接,而将返回已经打开的连接标识。参数 new_link 改变此行为并使 mysql_connect() 总是打开新的连接,甚至当 mysql_connect() 曾在前面被用同样的参数调用过。 |
client_flags | 可选。client_flags 参数可以是以下常量的组合:
|
提示和注释:
您可以在服务器 php.ini 文件指定用户名和密码,而不是一次又一次的在你的每一个 PHP 脚本使用他们。检查 php.ini 文件配置。
关闭数据库连接
PHP 提供了最简单的函数 mysql_close 关闭数据库连接。此函数接受 mysql_connect 函数返回的连接资源作为参数。成功它将返回 TRUE;如果执行失败将返回 FALSE。
语法:
1 |
bool mysql_close ( resource $link_identifier ); |
如果没有指定一个资源,最后打开数据库被关闭。
例子
下面的例子尝试打开和关闭数据库连接:
1 2 3 4 5 6 7 8 9 10 11 12 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'guest'; $dbpass = 'guest123'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_close($conn); ?> |
用 PHP 创建 MySQL 数据库
创建一个数据库
创建和删除数据库你应该有管理特权。它很容易创建一个新的 MySQL 数据库。PHP 使用 mysql_query 函数创建一个MySQL 数据库。这个函数接受两个参数执行成功并返回 TRUE;如果执行失败将返回 FALSE。
语法
1 |
bool mysql_query( sql, connection ); |
参数 | 说明 |
---|---|
sql | 必填—–用 SQL查询语句创建一个数据库 |
connection | 可选的,如果没有指定,那么最后只连接到 mysql_connect 将被使用。 |
例子
试运行以下例子创建数据库:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; $sql = 'CREATE Database test_db'; $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not create database: ' . mysql_error()); } echo "Database test_db created successfully\n"; mysql_close($conn); ?> |
选择一个数据库
一旦你打开一个连接到一个数据库服务器,那么它将需要选择一个特定的数据库相关联的所有表的地方。
这是必需的,因为可能有多个数据库驻留在一个单独的服务器上,你可以使用一个数据库。
PHP 提供了函数 mysql_select_db 选择一个数据库。成功它将返回 TRUE;如果执行失败将返回 FALSE。
语法
1 |
bool mysql_select_db( db_name, connection ); |
参数 | 说明 |
---|---|
db_name | 必填—–选择数据库名称 |
connection | 可选的,如果没有指定,那么最后只连接到 mysql_connect 将被使用。 |
例子
这里的示例向您展示如何选择一个数据库:
1 2 3 4 5 6 7 8 9 10 11 12 13 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'guest'; $dbpass = 'guest123'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; mysql_select_db( 'test_db' ); mysql_close($conn); ?> |
创建数据库表
创建新的数据库中的表你需要做同样的事情就像创建数据库。首先使用 SQL 查询创建表然后使用 mysql_query() 函数执行查询。
例如:尝试以下示例创建一个表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } echo 'Connected successfully'; $sql = 'CREATE TABLE employee( '. 'emp_id INT NOT NULL AUTO_INCREMENT, '. 'emp_name VARCHAR(20) NOT NULL, '. 'emp_address VARCHAR(20) NOT NULL, '. 'emp_salary INT NOT NULL, '. 'join_date timestamp(14) NOT NULL, '. 'primary key ( emp_id ))'; mysql_select_db('test_db'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not create table: ' . mysql_error()); } echo "Table employee created successfully\n"; mysql_close($conn); ?> |
在一定情况下,您需要创建许多表首先最好先创建一个文本文件,把所有的 SQL 命令写到文本文件中,然后执行这些命令将该文件导入到 mysq 数据库中。
考虑以下内容 sql_query.txt 文件
1 2 3 4 5 6 7 |
CREATE TABLE employee( emp_id INT NOT NULL AUTO_INCREMENT, emp_name VARCHAR(20) NOT NULL, emp_address VARCHAR(20) NOT NULL, emp_salary INT NOT NULL, join_date timestamp(14) NOT NULL, primary key ( emp_id )); |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $query_file = 'sql_query.txt'; $fp = fopen($query_file, 'r'); $sql = fread($fp, filesize($query_file)); fclose($fp); mysql_select_db('test_db'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not create table: ' . mysql_error()); } echo "Table employee created successfully\n"; mysql_close($conn); ?> |
使用 PHP 删除 MySQL 数据库
删除一个数据库
如果数据库不再需要那么它将可以被永远删除。您可以使用 SQL 命令传递给 mysql_query 执行删除一个数据库。
例子
尝试以下例子来删除一个数据库。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'DROP DATABASE test_db'; $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not delete database db_test: ' . mysql_error()); } echo "Database deleted successfully\n"; mysql_close($conn); ?> |
警告:对于删除一个数据库和表,它是非常危险的。所以删除任何表或数据库之前你应该确保你所做的一切是自愿的。
删除一个表
它通过 mysql_query 函数再次的发出一个 SQL 命令来删除任何数据库和数据表。但使用这个命令时要非常小心,因为这样做你可以在你的桌面上删除一些重要的信息。
尝试以下示例删除一个表:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'DROP TABLE employee'; $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not delete table employee: ' . mysql_error()); } echo "Table deleted successfully\n"; mysql_close($conn); ?> |
插入数据到 MySQL 数据库
数据可以通过 mysql_query PHP 函数执行 SQL INSERT 语句输入到 MySQL 表中。下面一个简单的例子将记录插入到 employee 表。
例子
尝试以下例子将记录插入到 employee 表。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'INSERT INTO employee '. '(emp_name,emp_address, emp_salary, join_date) '. 'VALUES ( "guest", "XYZ", 2000, NOW() )'; mysql_select_db('test_db'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not enter data: ' . mysql_error()); } echo "Entered data successfully\n"; mysql_close($conn); ?> |
在真实的应用程序中,所有的值都将使用 HTML 表单进行提交,然后这些值将使用 PHP 脚本被捕获,最后将他们插入到 MySQL 数据表。
在当数据插入之前它的最佳实践是使用功能 get_magic_quotes_gpc()来查看当前魔法配置引号函数是否已经设置。如果这个函数返回 false,那么请使用函数 addslashes() 在引号之前添加斜杠。
例子
尝试将这段代码放入 add_employee.php 文件中,这将需要使用 HTML 表单进行输入,然后它将创建记录到数据库中。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 |
<html> <head> <title>Add New Record in MySQL Database</title> </head> <body> <?php if(isset($_POST['add'])) { $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } if(! get_magic_quotes_gpc() ) { $emp_name = addslashes ($_POST['emp_name']); $emp_address = addslashes ($_POST['emp_address']); } else { $emp_name = $_POST['emp_name']; $emp_address = $_POST['emp_address']; } $emp_salary = $_POST['emp_salary']; $sql = "INSERT INTO employee ". "(emp_name,emp_address, emp_salary, join_date) ". "VALUES('$emp_name','$emp_address',$emp_salary, NOW())"; mysql_select_db('test_db'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not enter data: ' . mysql_error()); } echo "Entered data successfully\n"; mysql_close($conn); } else { ?> <form method="post" action="<?php $_PHP_SELF ?>"> <table width="400" border="0" cellspacing="1" cellpadding="2"> <tr> <td width="100">Employee Name</td> <td><input name="emp_name" type="text" id="emp_name"></td> </tr> <tr> <td width="100">Employee Address</td> <td><input name="emp_address" type="text" id="emp_address"></td> </tr> <tr> <td width="100">Employee Salary</td> <td><input name="emp_salary" type="text" id="emp_salary"></td> </tr> <tr> <td width="100"> </td> <td> </td> </tr> <tr> <td width="100"> </td> <td> <input name="add" type="submit" id="add" value="Add Employee"> </td> </tr> </table> </form> <?php } ?> </body> </html> |
使用 PHP 从数据库取数据
可以通过 PHP 函数 mysql_query 执行 SQL SELECT 语句从 MySQL 表中获取的数据。你有几个选项可以从 MySQL 获取数据。
最常用的方法是使用函数mysql_fetch_array()。这个函数返回的是作为一个关联数组结果集和一个索引数组结果集,或两者兼而有之。这个函数如果没有更多的行将返回FALSE。
下面是一个简单的例子从 employee 表获取记录。
例子
尝试以下例子来显示 employee 表的所有记录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee'; mysql_select_db('test_db'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "EMP ID :{$row['emp_id']} <br> ". "EMP NAME : {$row['emp_name']} <br> ". "EMP SALARY : {$row['emp_salary']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?> |
这些结果集中的内容被分配给变量 $row 并且结果集中的值被打印出来。
注意:永远记住当你想插入数组的值到一个字符串要使用花括号。
在上面例子中常量 MYSQL_ASSOC 作为 mysql_fetch_array()函数的第二个参数,以便它返回作为一个关联数组的结果集。通过使用一个关联数组的名字可以访问字段,而不是使用索引。
PHP 提供了另一个函数称为 mysql_fetch_assoc() 也返回作为一个关联数组的结果集。
例子
尝试以下例子使用 mysql_fetch_assoc() 函数从 employee 表来显示所有记录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee'; mysql_select_db('test_db'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_assoc($retval)) { echo "EMP ID :{$row['emp_id']} <br> ". "EMP NAME : {$row['emp_name']} <br> ". "EMP SALARY : {$row['emp_salary']} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?> |
您还可以使用常量 MYSQL_NUM,作为 mysql_fetch_array() 函数的第二个参数。这将导致该函数返回一个索引数组。
例子
尝试以下例子使用常量 MYSQL_NUM从employee 表中取数据来显示所有记录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee'; mysql_select_db('test_db'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_NUM)) { echo "EMP ID :{$row[0]} <br> ". "EMP NAME : {$row[1]} <br> ". "EMP SALARY : {$row[2]} <br> ". "--------------------------------<br>"; } echo "Fetched data successfully\n"; mysql_close($conn); ?> |
上述三个例子将产生相同的结果。
释放内存:一个好的习惯是释放游标记忆在每个 SELECT 语句结束时。这可以通过使用 PHP 函数 mysql_free_result() 函数来进行操作。下面的例子显示如何使用。
例子
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $sql = 'SELECT emp_id, emp_name, emp_salary FROM employee'; mysql_select_db('test_db'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_NUM)) { echo "EMP ID :{$row[0]} <br> ". "EMP NAME : {$row[1]} <br> ". "EMP SALARY : {$row[2]} <br> ". "--------------------------------<br>"; } mysql_free_result($retval); echo "Fetched data successfully\n"; mysql_close($conn); ?> |
获取数据时您可以编写复杂的 SQL。过程仍将与上面提到的相同。
通过 PHP 使用分页
SQL SELECT 语句查询出的结果可能达到几千的记录总是可能的。但在页面上显示所有结果显然不是一个好主意。所以我们可以把这个结果面按要求分为许多页。在多个页面中分页显示查询结果而不是把它们都放在一个页面中。
使用 MySQL 中的两个参数的限制条款有助于生成分页。
第一个参数偏移量和第二个参数有多少应该从数据库返回的记录。
下面是一个简单的例子对获取记录使用限制条款来生成分页。
例子
尝试以下的例子每页显示 10 个记录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 |
<html> <head> <title>Paging Using PHP</title> </head> <body> <?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $rec_limit = 10; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } mysql_select_db('test_db'); /* Get total number of records */ $sql = "SELECT count(emp_id) FROM employee "; $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } $row = mysql_fetch_array($retval, MYSQL_NUM ); $rec_count = $row[0]; if( isset($_GET{'page'} ) ) { $page = $_GET{'page'} + 1; $offset = $rec_limit * $page ; } else { $page = 0; $offset = 0; } $left_rec = $rec_count - ($page * $rec_limit); $sql = "SELECT emp_id, emp_name, emp_salary ". "FROM employee ". "LIMIT $offset, $rec_limit"; $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not get data: ' . mysql_error()); } while($row = mysql_fetch_array($retval, MYSQL_ASSOC)) { echo "EMP ID :{$row['emp_id']} <br> ". "EMP NAME : {$row['emp_name']} <br> ". "EMP SALARY : {$row['emp_salary']} <br> ". "--------------------------------<br>"; } if( $page > 0 ) { $last = $page - 2; echo "<a href=\"$_PHP_SELF?page=$last\">Last 10 Records</a> |"; echo "<a href=\"$_PHP_SELF?page=$page\">Next 10 Records</a>"; } else if( $page == 0 ) { echo "<a href=\"$_PHP_SELF?page=$page\">Next 10 Records</a>"; } else if( $left_rec < $rec_limit ) { $last = $page - 2; echo "<a href=\"$_PHP_SELF?page=$last\">Last 10 Records</a>"; } mysql_close($conn); ?> |
更新数据到 MySQL 数据库中
数据可以通过使用 PHP 函数 mysql_query() 执行 SQL UPDATE 语句将数据更新到 MySQL 表中。
下面是一个简单的例子更新记录到员工表中。更新记录应使用条件条款定位在任何表中的位置。
下面的例子使用主键匹配员工表中的记录。
例子
试试以下的例子可以使您理解更新操作。你需要提供一个 ID 来更新雇员的薪水。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 |
<html> <head> <title>Update a Record in MySQL Database</title> </head> <body> <?php if(isset($_POST['update'])) { $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $emp_id = $_POST['emp_id']; $emp_salary = $_POST['emp_salary']; $sql = "UPDATE employee ". "SET emp_salary = $emp_salary ". "WHERE emp_id = $emp_id" ; mysql_select_db('test_db'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not update data: ' . mysql_error()); } echo "Updated data successfully\n"; mysql_close($conn); } else { ?> <form method="post" action="<?php $_PHP_SELF ?>"> <table width="400" border="0" cellspacing="1" cellpadding="2"> <tr> <td width="100">Employee ID</td> <td><input name="emp_id" type="text" id="emp_id"></td> </tr> <tr> <td width="100">Employee Salary</td> <td><input name="emp_salary" type="text" id="emp_salary"></td> </tr> <tr> <td width="100"> </td> <td> </td> </tr> <tr> <td width="100"> </td> <td> <input name="update" type="submit" id="update" value="Update"> </td> </tr> </table> </form> <?php } ?> </body> </html> |
从 MySQL 数据库删除数据
可以通过 PHP 函数 mysql_query 执行 SQL DELETE 语句从 MySQL 表中删除数据。
下面是一个简单的例子从 employee 表删除记录。删除记录时使用条件条款应定位在任何表的某个记录。
下面的例子使用主键匹配员工表中的记录。
例子
尝试以下的例子理解删除操作。您需要提供一个雇员 ID 从 employee 表删除一个雇员记录。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 |
<html> <head> <title>Delete a Record from MySQL Database</title> </head> <body> <?php if(isset($_POST['delete'])) { $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $emp_id = $_POST['emp_id']; $sql = "DELETE employee ". "WHERE emp_id = $emp_id" ; mysql_select_db('test_db'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not delete data: ' . mysql_error()); } echo "Deleted data successfully\n"; mysql_close($conn); } else { ?> <form method="post" action="<?php $_PHP_SELF ?>"> <table width="400" border="0" cellspacing="1" cellpadding="2"> <tr> <td width="100">Employee ID</td> <td><input name="emp_id" type="text" id="emp_id"></td> </tr> <tr> <td width="100"> </td> <td> </td> </tr> <tr> <td width="100"> </td> <td> <input name="delete" type="submit" id="delete" value="Delete"> </td> </tr> </table> </form> <?php } ?> </body> </html> |
使用 PHP 备份 MySQL 数据库
定期备份你的数据库总是一种好的做法。有三种方法可以使用备份你的 MySQL 数据库。
- 通过 PHP 使用 SQL 命令。
- 使用 MySQL 二进制通过 PHP mysqldump。
- 使用 phpMyAdmin 的用户界面。
通过 PHP 使用 SQL 命令
可以执行 SQL SELECT 命令完成任何表的备份。把一个完整的数据库存储您需要为单独的表编写单独的查询。每个表将存储到单独的文本文件中。
例子
试试以下的例子使用 SELECT INTO OUTFILE 查询用于创建表的备份:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $table_name = "employee"; $backup_file = "/tmp/employee.sql"; $sql = "SELECT * INTO OUTFILE '$backup_file' FROM $table_name"; mysql_select_db('test_db'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not take data backup: ' . mysql_error()); } echo "Backedup data successfully\n"; mysql_close($conn); ?> |
可能存在实例,当你需要恢复数据备份的前一段时间。恢复备份你只需要运行数据加载 INFILE 查询如下:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $conn = mysql_connect($dbhost, $dbuser, $dbpass); if(! $conn ) { die('Could not connect: ' . mysql_error()); } $table_name = "employee"; $backup_file = "/tmp/employee.sql"; $sql = "LOAD DATA INFILE '$backup_file' INTO TABLE $table_name"; mysql_select_db('test_db'); $retval = mysql_query( $sql, $conn ); if(! $retval ) { die('Could not load data : ' . mysql_error()); } echo "Loaded data successfully\n"; mysql_close($conn); ?> |
使用 MySQL 通过 PHP 二进制 mysqldump
MySQL 提供一个实用程序,mysqldump 执行数据库备份。使用这种二进制您可以在一个命令得到完整的数据库转储。
例子
下面的例子尝试把你完整的数据库转储:
1 2 3 4 5 6 7 8 9 10 11 |
<?php $dbhost = 'localhost:3036'; $dbuser = 'root'; $dbpass = 'rootpassword'; $backup_file = $dbname . date("Y-m-d-H-i-s") . '.gz'; $command = "mysqldump --opt -h $dbhost -u $dbuser -p $dbpass ". "test_db | gzip > $backup_file"; system($command); ?> |
使用 phpMyAdmin 用户界面:
如果你有 phpMyAdmin 用户界面可用,它很容易为你备份你的数据库。
备份您的 MySQL 数据库使用 phpMyAdmin 点击 phpMyAdmin 主页上的“出口”链接。您希望备份数据库,检查适当的 SQL 选项和输入备份文件的名称。