数据库使用MySQL数据库,分别实现面向过程、面向对象与数据库交互的实例:
/* test.sql
面向对象实例数据库test
*/
create database `test` default character set utf8 collate utf8_general_ci;
use test;
/*用户表*/
create table `e_user` (
id int auto_increment primary key,
username char(10) not NULL,
userpsw char(10) not NULL,
userage int not NULL,
usergrade int not NULL
)ENGINE=InnoDB charset=utf8;
/*向 user表插入数据*/
INSERT INTO `e_user`(`username`, `userpsw`, `userage`, `usergrade`) VALUES ('Tom','123456',23,4);
INSERT INTO `e_user`(`username`, `userpsw`, `userage`, `usergrade`) VALUES ('Jack','654321',22,2);
INSERT INTO `e_user`(`username`, `userpsw`, `userage`, `usergrade`) VALUES ('Tony','111111',20,1);
//end test.sql
-------------------------------------------------------
//数据库配置文件:db_config.php
<?php
header("content-Type: text/html; charset=utf-8");//设置浏览器显示格式
/* 数据库配置文件,db_config.php
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
$db_server = "localhost";
$db_user = "root";
$db_pwd = "123456";
$db_name = "test";
?>
-----------------------------------
//面向过程的方式与数据库交互:viewuser_mysql.php
<?php
header("content-Type: text/html; charset=utf-8");//设置浏览器显示格式
/* viewuser_mysql.php
*
* 面向过程的方式来读取数据库中的用户信息.
* 1.读取配置文件中的数据库参数.
* 2.建立数据库连接.
* 3.选择选择数据库.
* 4.执行sql语句.
* 5.将数据返回给数组.
* 6.将每个数据内容取出.
* 7.将信息显示.
*/
require_once ("db_config.php");//包含配置文件.
$sql = "select * from `e_user` where username='Jack'";
$conn = @mysql_connect($db_server, "root", "123456");//建立mysql连接
$my_db = mysql_select_db($db_name,$conn);//选择数据库
$result = mysql_query($sql, $conn);//执行查询语句
$userInfo = mysql_fetch_array($result);//返回查询结果到数组
mysql_close($conn);//关闭数据库连接
$username = $userInfo["username"];//将数据从数组取出
$userpsw = $userInfo["userpsw"];
$userage = $userInfo["userage"];
$usergrade = $userInfo["usergrade"];
echo "your name is ".$username."<br>";
echo "your pass word is ".$userpsw."<br>";
echo "your age is ".$userage."<br>";
echo "your grade is ".$usergrade."<br>";
?>
------------------------------------------->
//面向对象与数据库交互:class_user.php
<?php
//class_user.php
header("content-Type: text/html; charset=utf-8");//设置浏览器显示格式
/*
* 面向对象的取数据库信息的内容
*
* 显示用户Tom的信息需要几步?
* 1.创建Tom出来
* 2.让这个Tom告诉我们关于他的信息内容
* 3.显示这些信息.
*/
class UserInfo{
private $userName;//用户名
private $userPSW;//用户密码
private $userAge;//年龄
private $userGrade;//用户级别
private $userInfo;//存储数据库返回信息的数组变量.
public function __construct($name) {
require_once("db_config.php");//包含配置信息.
$sql = "select * from `e_user` where username='$name'";
// $conn = @mysql_pconnect($db_server,$db_user,$db_pwd);//建立mysql 连接
$conn=new mysqli($db_server,$db_user,$db_pwd,$db_name);//连接数据库
$sql = "select * from `e_user` where username='$name'";
// mysql_query('set names UTF8');
// $my_db = mysql_select_db($db_name,$conn);//选择数据库
// $result = mysql_query($sql, $conn);//执行查询语句
$result=$conn->query($sql);//执行查询语句
// var_dump($result);
// $this->userInfo = mysql_fetch_array($result);
// $this->userInfo = mysql_fetch_array($result);
$this->userInfo = $result->fetch_array();//返回查询结果到数组
// var_dump($this->userInfo);
// mysql_close($conn);//关闭数据库连接
mysqli_close($conn);//关闭数据库连接
$this->getInfo();//调用传递信息的方法.
}
//获取信息传递给属性的方法
private function getInfo(){
$this->userName = $this->userInfo["username"];
$this->userPSW = $this->userInfo["userpsw"];
$this->userAge = $this->userInfo["userage"];
$this->userGrade = $this->userInfo["usergrade"];
}
//返回每个属性的public 方法
public function getUserName(){
return $this->userName;
}
public function getUserPSW() {
return $this->userPSW;
}
public function getUserAge() {
return $this->userAge;
}
public function getUserGrade() {
return $this->userGrade;
}
}
?>
--------------------------------------------------
//调用 UserInfo类:viewuser.php
<?php
//viewuser.php
/*
* To change this license header, choose License Headers in Project Properties.
* To change this template file, choose Tools | Templates
* and open the template in the editor.
*/
header("content-Type: text/html; charset=utf-8");//设置浏览器显示格式
require_once ("class_user.php");
//include_once 'class_user.php';
$user = new UserInfo("Tom");//创建一个user对象.
$username = $user->getUserName();//分别调用方法取得数据
$userpsw = $user->getUserPSW();
$userage = $user->getUserAge();
$usergrade = $user->getUserGrade();
echo "your name is $username<br/>";//输出数据
echo "your pass word is $userpsw<br/>";
echo "your age is $userage<br/>";
echo "your grade is $usergrade<br/>";
?>
***************以下为总结*******************
1、Notice:Undefined index:uergrade in
变量不存在,检查是否拼写错误
2、Warning:mysql_fetch_array() expects parameter 1 to be resource, object given in
当使用$sqli= new mysqli($db_host,$db_user,$db_pwd,$db_name)连接数据库时,执行查询$result=$mysqli->query($result)后返回的是一个对象,返回结果时就只能按照
对象的方式返回:$this->userInfo = $result->fetch_array() ,而不能用mysql函数:$this->userInfo = mysql_fetch_array($result)