php 类的写法有点不明白,对于php面向对象还是不太理解

发布网友 发布时间:2022-04-22 09:20

我来回答

3个回答

热心网友 时间:2022-04-08 20:55

query方法里边,因为你给的不全,没法判断是你写的究竟是什么$re没在上文中出现这个变量,只有一个$rs,不知道是不是这个?
PHP类,成员有属性和方法,需要加访问修饰限定符如 public private protected等,如:
class person{
private $name;
public function say(){
echo 'hello';
}
}
访问对象属性石必须先对象再属性,
常量,和静态成员就用类名属性,或者方法名访问

这是个操作数据库的类,

定义方法肯定是写在类里边的,并且需要加访问修饰限定符,定义方法就跟普通函数一样,给你个参照吧:

/**
* mysql数据库操作类
*/
class MySQLDB {
//保存单例属性
private static $instance;
//操作数据库所需要的必要信息
private $_host;//主机地址
private $_port;//端口
private $_user;//用户名
private $_pass;//密码
private $_charset;//默认字符集
private $_dbname;//默认数据库
private $_prefix;//表前缀
private $_link;//连接标识保存属性
/**
* 构造方法
* @param $params array 构造时,需要的信息列表 $params = array('host'=>'xxx', 'post'=>'xxx', 'user'=>....);
*
*/
private function __construct($params=array()) {
//通过实例化对象时,传递的参数,初始化属性。
//同时判断,增加默认值
$this->_host = isset($params['host'])?$params['host']:'127.0.0.1';
$this->_port = isset($params['port'])?$params['port']:'3306';
$this->_user = isset($params['user'])?$params['user']:'root';
$this->_pass = isset($params['pass'])?$params['pass']:'';
$this->_charset = isset($params['charset'])?$params['charset']:'utf8';
$this->_dbname = isset($params['dbname'])?$params['dbname']:'';
$this->_prefix = isset($params['prefix'])?$params['prefix']:'';
//连接服务器
$this->_connect();
//设置编码
$this->_setCharset();
//选择数据库
$this->_selectDb();
}
/**
* 单例所需的私有克隆方法
*/
private function __clone() {
}
/**
* 用于获得该类对象的静态方法
*
* @param $params array 构造该对象时 所使用的参数数组
*
* @return 该类的单例
*/
public static function getInstance($params) {
if(!(self::$instance instanceof self)) {
self::$instance = new self($params);
}
return self::$instance;
}

/**
* 连接数据库
*
* @access private
*/
private function _connect() {
if($link = mysql_connect("{$this->_host}:{$this->_port}", $this->_user, $this->_pass)) {
//连接成功
$this->_link = $link;
} else {
//连接失败
exit('-_-!连接失败');
}
}
/**
* 在该类的对象,被反序列化时,对相应的资源进行重新初始化
*/
public function __wakeup() {
//连接服务器
$this->_connect();
//设置编码
$this->_setCharset();
//选择数据库
$this->_selectDb();
}
/**
* 在该类的对象,被序列化时,设置哪些属性应该序列化
*/
public function __sleep() {
return array('_host', '_port', '_user', '_pass', '_dbname', '_charset', '_prefix');
}
/**
* 设置字符集
*
* @access private
*/
private function _setCharset() {
// if(!mysql_query("set names {$this->_charset}")) {
// exit(mysql_error());
// }
$this->_query("set names {$this->_charset}");
}
/**
* 选默认数据库
*/
private function _selectDb() {
if($this->_dbname != '') {
$this->_query("use {$this->_dbname}");
}
}
/**
* 执行sql
*
* @access private
*
* @param $query string 待执行的sql语句
*
* @return mixed 如执行的查询类,返回结果集,非查询类的布尔值
*/
public function _query($query) {
//执行,判断执行结果,返回执行结果。如果有错误,提供错误信息
if($result = mysql_query($query, $this->_link)) {
return $result;//返回结果即可
} else {
//执行失败
echo '-_-好像失败了!<br>';
echo '出错的语句是:', $query, '<br>';
echo '错误的信息是:', mysql_error($this->_link), '<br>';
echo '错误的代码是:', mysql_errno($this->_link), '<br>';
die;//脚本就不走了
}
}

/**
* (标题)获得符合sql,的全部数据,适合用于执行查询类方法,select,show,desc(describe)
*
* (详细信息)通过得到一条查询类语句,返回所有的查询结果,方法内,需要实现,执行,获得结果集,在结果集内取得所有数据
*
* @access public
*
* @param $query_str string 需要执行的查询类字符串
*
* @return array 二维数组,每一个一维元素代表一条记录,每一个二维的元素,表示一个记录的字段
*/
public function getAll($query_str) {
if($result = $this->_query($query_str)) {
//成功
$rows = array();//初始化,防止一条记录都没有。
while($row = mysql_fetch_assoc($result)) {
$rows[] = $row;
}
return $rows;
} else {
//失败
return false;
}
}
/**
* 获得符合sql,的第一条记录,适合用于执行查询类方法,select,show,desc(describe)
*
* (详细信息)通过得到一条查询类语句,返回第一条查询结果,方法内,需要实现,执行,获得结果集,在结果集内取得第一条数据
*
* @access public
*
* @param $query_str string 需要执行的查询类字符串
*
* @return array 一维数组,每个元素,表示一个记录的字段
*/
public function getRow($query_str) {
if($result = $this->_query($query_str)) {
//成功
$row = mysql_fetch_assoc($result);
return $row;
} else {
//失败
return false;
}
}

/**
* 获得符合sql,的第一条记录的第一个字段,适合用于执行查询类方法,select,show,desc(describe)
*
* (详细信息)通过得到一条查询类语句,返回第一条查询结果的第一个字段,方法内,需要实现,执行,获得结果集,在结果集内取得第一条数据的第一个字段
*
* @access public
*
* @param $query_str string 需要执行的查询类字符串
*
* @return string 表示一个记录的第一个字段的值
*/
public function getOne($query_str) {
if($result = $this->_query($query_str)) {
//成功
$row = mysql_fetch_row($result);//最好使用索引数组
return $row[0];
} else {
//失败
return false;
}
}
/**
* 获取最新插入的自动增长ID
*/
public function last_insert_id() {
return mysql_insert_id($this->_link);
}
/**
* 取得影响的行数
*/
public function affected_rows() {
return mysql_affected_rows();
}

}

热心网友 时间:2022-04-08 22:13

其实不用你那么麻烦的;
<?php
$mysql_server = "127.0.0.1";
$mysql_username = "root";
$mysql_password = "";
$mysql_dbname = "a";

if (isset($_GET['username']) && !empty($_GET['username'])) {
$con = mysql_connect($mysql_server, $mysql_username, $mysql_password) or die ('Could not connect to mysql server!');
mysql_select_db($mysql_dbname) or die('Could not select database!');

$username = $_GET['username'];
$sql = "SELECT 表列名 FROM b";
$arrays=mysql_fetch_assoc(mysql_query($sql));
foreach($arrays['列名'] as $v)   {   echo $v." ";   }
mysql_close($con);
}
?>

热心网友 时间:2022-04-08 23:48

function fetchRecord(){
$row=mysql_fetch_array($this->return);
return $row;
}
这样?

声明声明:本网页内容为用户发布,旨在传播知识,不代表本网认同其观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。E-MAIL:11247931@qq.com