《第43讲 PHP中的数据库操作(1).pdf》由会员分享,可在线阅读,更多相关《第43讲 PHP中的数据库操作(1).pdf(9页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、第43讲 PHP中的数据库操作(1)第43讲 PHP中的数据库操作(1) Web编程技术编程技术 用PHP查询数据库 PDO(PHP Data Objects):目前用的最多的一种PHP连 接MySQL数据库的方法,MySQL5.0以上版本支持。 要利用PDO查询数据库,必须按照下列几步去做: 1.构建一个新的带参的PDOPDO,参数中指出要用到的服务器和数据库 ; 2.调用PDO对象的queryquery方法,该方法接受一个SQL查询字符串; 3.query3.query方法返回一个数组,数组的索引名恰好是所查询数据库表 的相应列名。 Web编程技术编程技术 连接到数据库 /PDO对象构造函
2、数的语法模板对象构造函数的语法模板 $db = new PDO(mysql:dbname=database; host=server, username, password);SQL /PDO对象构造函数示例对象构造函数示例 $db = new PDO(mysql:dbname=imdb; host=localhost, root, sesame);SQL Web编程技术编程技术 执行查询 PDO方法描述PDO方法描述 query(sql)查询数据库,返回匹配行(SELECT) exec(sql)修改数据库,返回受影响的行数 getAttribute(n) setAttribute(n) 获取
3、或者设置数据库连接的各种属性 quote(str)quote(str)处理过转义字符,生成可用于SQL查询的字符串 errorCode(),errorInfo()获取当前数据库错误的方法 beginTransaction(), commit(), inTransaction(), rollBack() 数据库事务处理方法 prepare(sql)产生一条SQL预处理语句 Web编程技术编程技术 查询方法 /PDO对象查询方法的语法模板对象查询方法的语法模板 $row = $db-query(SQL query); /调用查询方法调用查询方法 $db = new PDO(mysql:dbname
4、=imdb, root, sesame); $row = $db-query(SELECT name FROM movies WHERE name LIKE %oo%); Web编程技术编程技术 包含参数的查询 /当用户提交表单时,我们从当用户提交表单时,我们从$_GET“movietitle”数组中访问电数组中访问电 影标题影标题 #获取电影名称的查询参数 $title = $_GETmovietitle; /SQL查询中的表单查询参数查询中的表单查询参数 (不安全不安全) # 在数据库中执行SQL查询 $rows = $db-query(SELECT year FROM movies WH
5、ERE name=$title); 在查询中不应直接包含变量或查询参数。 它们可能包含非法字符或SQL语法来扰乱查询。 Web编程技术编程技术 常见错误:省略字符串变量的引号 $title = Pi; $rows = $db-query(SELECT year FROM movies WHERE name=$title); /在数据库中执行一条在数据库中执行一条SQL删除删除 $db-exec(DELETE FROM movies WHERE year=1999); /在数据库中执行一条在数据库中执行一条SQL插入插入 $db-exec(INSERT INTO actors(id, first
6、_name, last_name) VALUES(78890,Jenifer,Auster); SQL删除和插入 Web编程技术编程技术 SQL入 如果将用户键入的查询参数插入到SQL查询中, 则应注意这里存在安全问题。 用户可以尝试键入一个恶意参数值,该值会欺骗 查询以返回他人的私有数据或从数据库中删除数 据。 这种安全漏洞被称为SQL injectionSQL injection。 Web编程技术编程技术 SQL查询中安全地包含表单参数 为了防止这种情况发生,可以通过调用quote()方法将参数编码为安全 的形式,该方法接受一个值作为参数,并返回一个在查询中能够安全使 用的字符串。 在任何要插入的变量上调用PDO的quote()方法 quote转义任何非法字符,并用单引号包围该值。 预防用户输入的查询中的缺陷和安全问题 quote($_GETmovietitle); $rows = $db-query(SELECE year FROM movies WHERE name = $title;); ?