PHP面向对象与面向过程实例

数据库使用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)

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值