第16章 PHP操作MySQL
学习要点:
1.PHP连接到MySQL
2.增删改查
3.其他常用函数
如果你已经具有了使用PHP、SQL和MySQL的丰富经验,现在就可以把所有这些技术组合在一起。PHP与MySQL之间稳固的集成只是众多程序员采纳它的一个原因,还有一个原因就是,它如此的简单方便。
一.PHP连接到MySQL
这里,我们全面采用UTF-8编码。
设置Zend Stduio的编码:Window -> Preferences -> Workspace
标头设置,让火狐和IE保持编码统一:
<?php
header('Content-Type:text/html; charset=utf-8');
?>
连接MySQL
<?php
$conn = @mysql_connect(DB_HOST,DB_USER,DB_PASSWORD) or
die('数据库连接失败!错误信息:'.mysql_error());
?>
数据库连接参数,可以用常量存储,这样就不能修改,更加安全。
<?php
define('DB_USER','root');
define('DB_PASSWORD','yangfan');
define('DB_HOST','localhost');
define('DB_NAME','school');
?>
选择你所需要的数据库
<?php
@mysql_select_db(DB_NAME) or die('数据库找不到!错误信息:'.mysql_error());
?>
设置字符集,如果是GBK,直接设置SET NAMES GBK即可
<?php
@mysql_query('SET NAMES UTF8') or die('字符集设置错误');
?>
获取记录集
<?php
$query = "SELECT * FROM grade";
$result = @mysql_query($query) or die('SQL语句有误!错误信息: '.mysql_error());
?>
输出一条记录
<?php
print_r(mysql_fetch_array($result,MYSQL_ASSOC));
?>
释放结果集资源
<?php
mysql_free_result($result);
?>
关闭数据库
<?php
mysql_close($conn);
?>
二.增删改查
新增数据
<?php
$query = "INSERT INTO grade (name,email,point,regdate) VALUE
('李炎恢','yc60.com@gmail.com',,NOW())";
@mysql_query($query) or die('添加数据出错:'.mysql_error());
?>
修改数据
<?php
$query = "UPDATE grade SET name='小可爱' WHERE id=6";
@mysql_query($query) or die('修改出错:'.mysql_error());
?>
删除数据
<?php
$query = "DELETE FROM grade WHERE id=6";
@mysql_query($query) or die('删除错误:'.mysql_error());
?>
显示数据
<?php
$query = "SELECT id,name,email,point FROM grade";
$result = @mysql_query($query) or die('查询语句出错:'.mysql_error());
while (!!$row = mysql_fetch_array($result)) {
echo $row['id'].'----'.$row['name'].'----'.$row['email'].'----'.$row['point'];
echo '<br />';
}
?>
三.其他常用函数
mysql_fetch_row():从结果集中取得一行作为枚举数组
mysql_fetch_assoc(): 从结果集中取得一行作为关联数组
mysql_fetch_array(): 从结果集中取得一行作为关联数组,或数字数组,或二者兼有
mysql_fetch_lengths(): 取得结果集中每个输出的长度
mysql_field_name(): 取得结果中指定字段的字段名
mysql_num_rows(): 取得结果集中行的数目
mysql_num_fields():取得结果集中字段的数目
mysql_get_client_info(): 取得 MySQL 客户端信息
mysql_get_host_info(): 取得 MySQL 主机信息
mysql_get_proto_info(): 取得 MySQL 协议信息
mysql_get_server_info(): 取得 MySQL 服务器信息
================================================================
================================================================
================================================================
整体操作:
<?php /* mysql_query() 仅对 SELECT,SHOW,DESCRIBE, EXPLAIN 和其他语句 语句返回一个 resource,如果查询出现错误则返回 FALSE。 对于其它类型的 SQL 语句,比如INSERT, UPDATE, DELETE, DROP 之类, mysql_query() 在执行成功时返回 TRUE,出错时返回 FALSE。 返回的结果资源应该传递给 mysql_fetch_array() 和其他函数来处理结果表,取出返回的数据。 假定查询成功,可以调用 mysql_num_rows() 来查看对应于 SELECT 语句返回了多少行 或者调用 mysql_affected_rows() 来查看对应于 DELETE,INSERT,REPLACE 或 UPDATE 语句影响到了多少行。 如果没有权限访问查询语句中引用的表时,mysql_query() 也会返回 FALSE。 */ //第一步,设置输出编码 header('Content-Type:text/html; charset=utf-8'); //第二步,定义常量,保存链接参数 //数据库服务器 define('DB_SERVER','localhost:3306'); //用户名 define('DB_NAME','root'); //密码 define('DB_PWD','123456'); //数据库 define('DB_DATABASE', 'guest'); //第三步,连接数据库服务器 $conn = @mysql_connect(DB_SERVER,DB_NAME,DB_PWD) or die('数据库连接错误:'.mysql_error($conn)); //第四步,选择使用的数据库 @mysql_select_db(DB_DATABASE,$conn) or die('选择数据库错误:'.mysql_error($conn)); //第五步,设置返回数据的字符集 @mysql_query('SET NAMES UTF8') or die('字符集设置错误'); //第六步,创建并发送一条SQL语句 //创建SQL语句 $query = "select * from g_users"; //发送语句 $result = @mysql_query($query,$conn) or die('SQL错误,错误信息:'.mysql_errno()); //第七步,取得查询的数据 //取得所有数据 $data = mysql_fetch_array($result,MYSQL_ASSOC); //取得总记录条数 //$data = mysql_num_rows($result); //第八步,打印出数据 print_r($data); //第九步,销毁获取的数据资源 mysql_free_result($result); //第十步,关闭数据库连接 mysql_close($conn); ?>
配置MySQLHELper代码:
<?php //第一步,设置输出编码 header('Content-Type:text/html; charset=utf-8'); //第二步,定义常量,保存链接参数 //数据库服务器 define('DB_SERVER','localhost:3306'); //用户名 define('DB_NAME','root'); //密码 define('DB_PWD','123456'); //数据库 define('DB_DATABASE', 'test'); //第三步,连接数据库服务器 $conn = @mysql_connect(DB_SERVER,DB_NAME,DB_PWD) or die('数据库连接错误:'.mysql_error($conn)); //第四步,选择使用的数据库 @mysql_select_db(DB_DATABASE,$conn) or die('选择数据库错误:'.mysql_error($conn)); //第五步,设置返回数据的字符集 @mysql_query('SET NAMES UTF8') or die('字符集设置错误'); ?>
操作代码:
<?php include_once 'config.php'; //添加一条数据 /* $Insert_query = "insert into person (name, sex) values ('张三', '男')"; //执行 @mysql_query($Insert_query) or die('插入操作失败,错误原因:'.mysql_error()); //返回 insert ,delete, update,等修改的行数 $num = mysql_affected_rows(); //显示信息 /* if ($num == 1) { echo '添加成功!'; }else { echo '添加失败!'; } */ //删除一条数据 /* $delete_query = "delete from person where id = 7"; //执行 @mysql_query($delete_query) or die('删除数据失败,错误原因:'.mysql_error()); $num = mysql_affected_rows(); //显示信息 /* if ($num == 1) { echo '删除成功!'; }else { echo '删除失败!'; } */ //修改一条数据 /* $update = "update person set name = '王五', sex = '女' where id = 8"; //执行 @mysql_query($update) or die('修改发生错误,错误原因:'.mysql_error()); $num = mysql_affected_rows(); //显示信息 /* if ($num == 1) { echo '修改成功!'; }else { echo '修改失败!'; } */ //查询数据 /* $query = "select id, name, sex from person"; $result = mysql_query($query); */ //打印单行 /* $row = mysql_fetch_array($result,MYSQL_ASSOC); echo $row['id'].'--'.$row['name'].'--'.$row['sex']; */ //打印多行 //当$row不为空的时候,打印数据。使用"!!"的作用是,使得$row数组转换为布尔值。 /* while (!!$row = mysql_fetch_array($result)) { echo $row['id'].'--'.$row['name'].'--'.$row['sex']."<br/>"; } */ //获取记录条数 /* $num_query = "select id, name, sex from person"; $result = mysql_query($num_query) or die('查询条数出错,错误信息:'.mysql_error()); $num = mysql_num_rows($result); echo '条数:'.$num; */ //关闭数据库链接 mysql_close(); ?>