class
cls_mysql
{
protected
$link_id
public
function
__construct($dbhost,
$dbuser,
$dbpw,
$dbname
=
'',
$charset
=
'utf8')//构造函数
{
if(!($this->link_id
=
mysql_connect($dbhost,
$dbuser,
$dbpw)))
{
$this->ErrorMsg("Can't
pConnect
MySQL
Server($dbhost)!")
}
mysql_query("SET
NAMES
"
.
$charset,
$this->link_id)//设置编码
if
($dbname)
{
if
(mysql_select_db($dbname,
$this->link_id)
===
false
)
{
$this->ErrorMsg("Can't
select
MySQL
database($dbname)!")
return
false
}
else
{
return
true
}
}
}
public
function
select_database($dbname)//选择数据库
{
return
mysql_select_db($dbname,
$this->link_id)
}
public
function
fetch_array($query,
$result_type
=
MYSQL_ASSOC)//得到遍历后的数据,是一个数组形式
{
return
mysql_fetch_array($query,
$result_type)
}
public
function
query($sql)//执行查询
{
return
mysql_query($sql,
$this->link_id)
}
public
function
affected_rows()//得到影响的记录集数
{
return
mysql_affected_rows($this->link_id)
}
public
function
num_rows($query)//获得查询的记录数
{
return
mysql_num_rows($query)
}
public
function
insert_id()
{
return
mysql_insert_id($this->link_id)//获得插入的id
}
public
function
selectLimit($sql,
$num,
$start
=
0)
{
if
($start
==
0)
{
$sql
.=
'
LIMIT
'
.
$num
}
else
{
$sql
.=
'
LIMIT
'
.
$start
.
',
'
.
$num
}
return
$this->query($sql)
}
public
function
getOne($sql,
$limited
=
false)//获取一条记录
{
if
($limited
==
true)
{
$sql
=
trim($sql
.
'
LIMIT
1')
}
$res
=
$this->query($sql)
if
($res
!==
false)
{
$row
=
mysql_fetch_row($res)
return
$row[0]
}
else
{
return
false
}
}
public
function
getrow($sql)
{
$res
=
$this->query($sql)
if
($res
!==
false)
{
return
mysql_fetch_assoc($res)
}
else
{
return
false
}
}
public
function
getAll($sql)
{
$res
=
$this->query($sql)
if
($res
!==
false)
{
$arr
=
array()
while
($row
=
mysql_fetch_assoc($res))
{
$arr[]
=
$row
}
return
$arr
}
else
{
return
false
}
}
function
ErrorMsg($message
=
'',
$sql
=
'')
{
if
($message)
{
echo
"<b>error
info</b>:
$message\n\n"
}
else
{
echo
"<b>MySQL
server
error
report:"
print_r($this->error_message)
}
exit
}
}
PHP和MySQL被称为黄金搭档,几乎所有的基于PHP应用的项目都在使用MySQL,在PHP中,连接MySQL数据库十分简单,简单到只需要一个函数函数即可:mysql_connect($host,$username,$password)
它有三个参数,分别是数据库主机名,数据库用户名,数据库用户密码。
如果我们的数据库在本地,那么数据库主机名可写为127.0.0.1。例如,我们可以使用这个方法连接数据库:
$con=mysql_connect('127.0.0.1','user','123456') or die("服务器连接失败!")
mysql_select_db('test',$con)
mysql_query("set names 'gb2312'")
三行代码就实现了连接MySQL数据库。在上面例子中,mysql_select_db()表示选择数据库,上例表示连接test数据库,其中set names 'gb2312'表示设置数据库读取的编码为gb2312。
如果数据库的用户名和密码错误,页面上自动会提示“服务器连接失败”。
一般的,我们在做OOP的开发当中,习惯上把PHP连接数据库的部分,写在一个单独的类中。例如:
class cls_mysql
{
protected $link_id
public function __construct($dbhost, $dbuser, $dbpw, $dbname = '', $charset = 'utf8')//构造函数
{
if(!($this->link_id = mysql_connect($dbhost, $dbuser, $dbpw)))
{
$this->ErrorMsg("Can't pConnect MySQL Server($dbhost)!")
}
mysql_query("SET NAMES " . $charset, $this->link_id)//设置编码
if ($dbname)
{
if (mysql_select_db($dbname, $this->link_id) === false )
{
$this->ErrorMsg("Can't select MySQL database($dbname)!")
return false
}
else
{
return true
}
}
}
public function select_database($dbname)//选择数据库
{
return mysql_select_db($dbname, $this->link_id)
}
public function fetch_array($query, $result_type = MYSQL_ASSOC)//得到遍历后的数据,是一个数组形式
{
return mysql_fetch_array($query, $result_type)
}
public function query($sql)//执行查询
{
return mysql_query($sql, $this->link_id)
}
public function affected_rows()//得到影响的记录集数
{
return mysql_affected_rows($this->link_id)
}
public function num_rows($query)//获得查询的记录数
{
return mysql_num_rows($query)
}
public function insert_id()
{
return mysql_insert_id($this->link_id)//获得插入的id
}
public function selectLimit($sql, $num, $start = 0)
{
if ($start == 0)
{
$sql .= ' LIMIT ' . $num
}
else
{
$sql .= ' LIMIT ' . $start . ', ' . $num
}
return $this->query($sql)
}
public function getOne($sql, $limited = false)//获取一条记录
{
if ($limited == true)
{
$sql = trim($sql . ' LIMIT 1')
}
$res = $this->query($sql)
if ($res !== false)
{
$row = mysql_fetch_row($res)
return $row[0]
}
else
{
return false
}
}
public function getrow($sql)
{
$res = $this->query($sql)
if ($res !== false)
{
return mysql_fetch_assoc($res)
}
else
{
return false
}
}
public function getAll($sql)
{
$res = $this->query($sql)
if ($res !== false)
{
$arr = array()
while ($row = mysql_fetch_assoc($res))
{
$arr[] = $row
}
return $arr
}
else
{
return false
}
}
function ErrorMsg($message = '', $sql = '')
{
if ($message)
{
echo "<b>error info</b>: $message\n\n"
}
else
{
echo "<b>MySQL server error report:"
print_r($this->error_message)
}
exit
}
}
首先明确一下,你的空指针是在哪报的错,你写的sql语句,本身也是被预编译后,放mysql执行的,如果你selectt *方式去读取的,那么可以通过getRow或者是遍历的方式去计数,如果selectt count方式的话,可以直接通过getInt方式去读取,你上边说报了空指针,那你自己可以加一个端点进行调试
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)