写了一个表单,不知道怎么和数据库连接,是PHP的 MYSQL

写了一个表单,不知道怎么和数据库连接,是PHP的 MYSQL,第1张

您好,这样:

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方式去读取,你上边说报了空指针,那你自己可以加一个端点进行调试


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/zaji/7454415.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-04-05
下一篇 2023-04-05

发表评论

登录后才能评论

评论列表(0条)

保存