PHP+MySQL的
从Web查询数据库:
- 一个用户的浏览器发出
一个HTTP请求,请 求特定的Web页面, 在该页面中出发for m表单提交到php脚 本文件(如:resu lts.php)中处 理 - Web服务器接收到对
results.ph p页面的请求后,检索 文件,并将其传递给P HP引擎处理 - PHP引擎开始解析脚
本。脚本主要包括了连 接数据库和执行查询的命令。PHP启动了 对MySQL服务器的 连接并向该服务器发送适当的查询。 - MySQL服务器接收
到数据库查询的请求, 开始处理这个查询,并 将查询结果返回给PH P引擎。 - PHP引擎完成了脚本
的运行后,将该HTML返回Web服务器。 - Web服务器再将HT
ML返回给客户端浏览 器,用户就可以看到响 应后的结果页面。
从Web查询数据库的
- 检查并过滤来自用户的
数据 首先,我们将过滤用户 可能在其搜索条件的起 始或结束位置不小心输 入的空白字符,这是用 函数trim()来实 现。 我们这么麻烦的检查用 户输入数据的原因是防 止多个接口连接数据库 ,因为用户从不同的界 面进入,这样可能导致 安全问题。 然后,当准备使用用户
输入的任何数据时,也 要适当的过滤一些控制 字符,当用户输入数据 到数据库时必须转义数 据,,此时 使用盗的函数有addslashe s()函数、stri pslashes() 函数和get_mag ic_qutoes_ gpc()函数。ad dslashes() 函数为了数据 库查询语句等的需要在 某些字符前加上了反斜 线;stripsla shes()函数去掉 字符串中的反斜线字符 ;get_magic _qutoes_gp c()函数 魔术添加转义字符 “\”,获取当前活动配置magic_qu otes_runti me设置,如果运行时 关闭魔术引号,返回0 ,否则返回1。我们也 可以使用 htmispecia lchars()对H TML中的特殊意义字 符警醒编码,htmi specialcha rs()函数把一些预 定义的字符转换为 HTML 实体 【预定义的字符是:& (和号) 成为 & " (双引号) 成为 " ' (单引号) 成为 ' < (小于) 成为 < > (大于) 成为 >】 - 建立一个到适当数据库
的连接 PHP为连接MySQ L提供了函数库mys qli(i表示改进) 。 当在PHP中使用my
sqli函数库是可以 使用面向对象或面向过程的语法: 1、面向对象, @ $db = new mysqli('ho
stname','u sername',' password', 'dbname'); 返回一个对象 2、面向过程: @ $db = mysqli_con
nect('host name','use rname','pa ssword','d bname');返回 一个资源,这个资源表 示数据库的连接,而且 如果使用过程方法,必须将这个资源传递 到mysqli的所有 其它函数。这与处理函 数非常类似 mysqli的大多数
函数都有面向对象接口 和过程接口,二者的差 异则在于过程版本的函 数名称以mysqli _开头,同时要求传入 mysqli_con nect()函数获得 的资源句柄。 对于这个规则来说,数 据可连接是一个异常, 因为它是由mysql i对象的构造函数来创 建的。因此尝试连接时 需要进行检查,mys qli_connec t_errno()函 数将在出现连接 错误时返回一个错误号 ,如果成功,则返回0 . 请注意:
当连接到数据库是,通常会议错误抑制符@作 为第一含代码。这样可以巧妙的处理 任何错误,也可以通过 异常来处理。另外,M ySQK对同时连接 数据库的连接数量有一 定的限制。MySQL i参数max_con nections决定 了同时连接的个数,该 参数和相关的Apache参数MaxClien ts的作用是告诉服务 器拒绝新的连接请求, 从而保证系统资源不会 再系统忙碌时或系统瘫 痪时被请求或使用。要 设置Apache中的 MaxClients 参数可以编辑系统中的 httpd.conf 文件。要为MySQL i设置max_con nections参数 可以编辑文件my.c onf。 选择使用的数据库: 在MySQL命令行使
用 use dbname;命令; 在php中可以用$d b->select_ db(dbname) ;或mysqli_s elect_db(d b_resource ,dbname)。 - 查询数据库 要执行数据库查询,首
先应构造查询语句:$ query = "select * from user";然后运行 $result = $db->query ($query);或 者$result = mysqli_que ry($db,$qu ery); 面向对象版本将返回一 个结果对象;过程版本 将返回一个结果资源。 无论何种方法都将结果 保存在$result 变量中工以后使用。如 果函数运行失败将返回 false。 - 获取查询结果 使用不同的函数以不同
的方式将查询结果从结 果对象或标识符中取出 来,结果对象或标识符 是访问查询返回行的关 键。 通常我们要得到结果集
中记录行的行数,并且 使用mysqli_f etch_assoc ()函数。 返回行数:$num_
results = $result->n um_rows;(行 数保存在对象的num _rows成员变量中 )或$num_res ults = mysqli_num _rows($res ult); 然后使用循环遍历每一
行,在循环中调用 $row = $result->f ectch_asso c();或者 $row = mysqli_fet ch_assoc($ result);返回 该行的信息。 如果是对象返回行则每 个关键词为一个属性名 ,每个值为属性中的相 应的值;如果以资源返 回则返回数组。 还有其他从结果标识符
中获取结果的方法,例 如:使用$row = $result->f ecth_row($ result);或者 $row = mysqli_fet ch_row($re sult);将结果取 回 到一个列举数组中;也 可以使用$row = $result->f ecth_objec t();或者 $row = mysqli_fec th_object( $result);江 一行去回到一个对象中 。 - 从数据库断开 先释放结果集:$re
sult->free ();或 mysqli_fre e_result($ result);然后 关闭数据库连接:$d b->close() 或者 mysqli_clo se($db); 严格的说,这并不必须 ,因为脚本执行完毕的 时候他们将被自动关闭 。
从Web查询数据库:
mysqli函数库支
prepared语句
我们一般使用一下几个
1、构造模板。已插入
2、使用prepar
3、调用$stmt-
3、调用$stmt-
对于select类型
使用PHP与数据库交
PHP支持连接到许多
ODBC表示开放的数
除了PHP附带的函数