您好,欢迎访问三七文档
当前位置:首页 > IT计算机/网络 > 数据库 > 第18章 PHP操作数据库
y270y第18章PHP操作数据库在实际的应用中,通常使用数据库存储数据信息。虽然可以直接对数据库进行操作,但是对于Web系统而言,更多是使用程序对数据库进行相关操作。例如,读取数据库信息、从数据库查询信息等。本章主要内容如下。PHP操作与管理MySQL数据库。PHP操作SQLServer数据库。PHP操作Access数据库。通过对本章的学习,读者能够使用PHP对常用的数据库进行相关操作,并能够根据实际需要进行相关管理系统的开发。18.1PHP操作MySQL数据库在PHP中,支持对多种数据库的操作,且提供了相关的数据库连接函数或操作函数。特别是与MySQL数据库的组合,PHP提供了强大的数据库操作函数,读者可直接在PHP中使用这些函数进行数据库的操作。操作数据库,首先需要进行数据库的连接,然后选择需要进行操作的数据库,再执行相关的数据库操作,最后需要关闭所建立的数据库连接。这一节将对在PHP中如何进行数据库的操作进行详细地讲解。18.1.1连接MySQL数据库在PHP中,要对数据库进行操作,首先需要连接数据库。连接数据库可使用mysql_connect()函数,其语法格式如下所示。resourcemysql_connect([string$server[,string$username[,string$password[,bool$new_link[,int$client_flags]]]]])其中,参数server为要连接的数据库服务器的名称或IP;参数username为连接数据库的用户名,若没有设置该参数,则默认为服务器进程所有者的用户名;参数password为连接数据库的密码,如果未设置该参数,则默认为空。若每一次都使用一样的参数进行连接,在PHP中将不会进行新的数据库连接,而是直接返回已打开的数据库连接标识。参数new_link则改变了此行为,若设置该参数为布尔值true,则将在每一次使用mysql_connect函数进行数据库连接时打开新的数据库连接,甚至在之前曾使用同样的参数进行过数据库的连接。参数client_flags为设置客户端信息,它可以是以下常用的组合。第18章PHP操作数据库y271yMYSQL_CLIENT_COMPRESS:在客户端使用压缩的通讯协议。MYSQL_CLIENT_IGNORE_SPACE:允许在函数名后留空格位。MYSQL_CLIENT_INTERACTIVE:允许设置断开连接之前所空闲等候的interactive_timeout时间。MYSQL_CLIENT_SSL:使用SSL协议进行加密。该函数尝试打开或重复使用一个已打开的MySQL数据库服务器的连接。若成功连接,MySQL数据库服务器,返回一个MySQL连接标识,否则返回布尔值false。【示例18-1】如何在PHP脚本中进行MySQL数据库服务器的连接。代码如下所示。?phpmysql_connect(localhost,root,root);//连接至本地MySQL服务器,用户名和密码均为root?分析:在上述代码中使用mysql_connect函数连接本地MySQL数据库服务器,连接数据库的用户名和密码均为root。注意:若数据库服务器不可用,或连接数据库的用户名或密码错误,则可能会引起一条PHP警告信息,如下所示。Warning:mysql_connect()[function.mysql-connect]:Accessdeniedforuser'root'@'localhost'(usingpassword:YES)inD:\xampplite\htdocs\book\source\18\18.1.phponline2在该警告信息中,提示使用用户名root无法连接本地MySQL数据库,并且该警告信息并不能停止脚本的继续执行。同时也将暴露数据库连接的敏感信息,很不利于数据库的数据安全。为此通常在进行数据库连接时,在连接函数前使用“@”符号抑制错误信息的输出,然后在连接函数后使用DIE函数指定错误信息并停止脚本的执行。【示例18-2】在PHP脚本中如何安全地连接MySQL数据库服务器。代码如下所示。?php@mysql_connect(localhost,root,root)ordie(数据库连接失败!);//连接本地数据库服务器?分析:在上述程序中,使用“@”符号抑制连接数据库服务器的错误信息的输出,并使用die()函数抛出定制的错误信息,终止整个脚本的执行。注意:包含创建数据库连接的脚本一结束,与服务器的连接就被关闭,除非之前已经明确调用mysql_close()函数关闭了数据库连接。在实际的应用中,通常在多个脚本文件中都需要进行数据库的连接,此时为了维护方便和节省代码,可将数据库连接放在一个单独的文件中,在需要使用数据库连接的脚本中使用include()函数或require()函数引用该文件。也可将数据库连接作为一个单例,在每一个需要使用的脚本中调用该单例。18.1.2断开与MySQL的连接通常在完成数据库的使用后,需要断开与MySQL数据库服务器的连接。断开与MySQLPHP从入门到精通y272y数据库服务器的连接通常使用函数mysql_close()函数,其语法格式如下所示。boolmysql_close([resource$link_identifier])其中,参数link_identifier为数据库连接标识。若没有该参数,则关闭上一个已打开的非持久数据库连接。函数关闭指定的连接标识所关联的非持久数据库连接。注意:mysql_close()函数不会关闭由mysql_pconnect()函数所建立的持久连接。【示例18-3】在PHP脚本中关闭一个由mysql_connect()函数所建立的数据库连接。代码如下所示。?php@mysql_connect(localhost,root,root)ordie(数据库连接失败!);//连接数据库服务器mysql_close();//关闭数据服务器连接?分析:在上述代码中,使用mysql_close()函数关闭一个已创建的非持久数据连接。虽然在前面已讲到,创建数据库连接的脚本一结束,其数据库连接自动关闭。但是从节省服务器资源层面上讲,在使用完数据库连接后,使用mysql_close()函数关闭数据库连接能更有效地节省服务器资源。18.1.3选择和使用MySQL数据库在进行数据库的连接后,需要在PHP脚本中选择需要进行操作的MySQL数据库。选择数据库可使用mysql_select_db()函数,其语法格式如下所示。boolmysql_select_db(string$database_name[,resource$link_identifier])其中,参数database_name为要进行操作的数据库,参数link_identifier为创建的数据库连接标识。如果没有指定数据库连接标识,则使用上一个已打开的数据库连接标识;若没有已打开的数据库连接标识,函数将尝试使用无参数调用mysql_connect()创建数据库连接并使用。函数尝试设定与指定的连接标识符所关联的MySQL数据库服务器上的当前激活数据库。若操作成功,则返回布尔值true,否则返回false。【示例18-4】在PHP脚本中如何选择MySQL数据库服务器上的数据库。代码如下所示。?php@mysql_connect(localhost,root,root)ordie(数据库连接失败!);@mysql_select_db(mydb)ordie(选择的数据库不存在或不可用!);mysql_close();?分析:在上述程序中,使用当前数据库连接选择mydb数据库作为当前活动数据库,对数据库的所有操作都将作用于该活动数据库。读者可以看出,这时选择数据作为当前活动数据库,其实就相当于在MySQL命令行所使用的use命令。第18章PHP操作数据库y273y18.1.4执行MySQL指令进行数据库的操作,在PHP中需要使用一函数来执行MySQL指令,这就是mysql_query()函数。其语法格式如下所示。resourcemysql_query(string$query[,resource$link_identifier])其中,参数query为要执行的MySQL语句,参数link_indentifier为打开的数据库连接。若没有设置参数link_indentifier,函数则使用上一个已打开的数据库连接;如果没有已打开的数据库连接,该函数则尝试以无参数方式调用mysql_connect()函数创建一个数据库连接并使用。函数向参数link_indentifier所关联的数据库服务器中的当前活动数据库发送一条查询。函数仅对select、show、explain和describe语句返回一个资源标识符用于存储SQL语句的执行结果,若执行不成功则返回false。对于其他类型的SQL语句,函数在执行成功时返回true,出错时将返回false。因此,任何非false的返回值意味着此次查询合法并能够被SQL服务器成功执行,但并不意味着影响或者返回的行数,因为有可能此次SQL语句成功执行,但是并没有影响到或返回任何一行。【示例18-5】在PHP脚本中如何执行SQL语句。代码如下所示。?php@mysql_connect(localhost,root,root)ordie(数据库连接失败!);//连接数据库服务器@mysql_select_db(mydb)ordie(“选择的数据库不存在或不可用!”);//选择数据库$myquery=@mysql_query(select*fromuserinfo)ordie(SQL语句执行失败!);//执行SQL语句mysql_close();//关闭数据库连接?分析:在上述程序中,进行了一次完整的数据连接操作。首先连接数据库服务器,然后选择数据库,执行SQL语句,最后关闭数据库连接。使用了mysql_query()函数执行SQL语句。除了mysql_query()函数能够执行SQL语句外,PHP还提供了另一函数mysql_db_query()。该函数与mysql_query()函数具有相同的功能,其区别在于mysql_db_query()函数在执行SQL语句时可以同时选择数据库。其语法格式如下所示。resourcemysql_db_query(string$database,string$query[,resource$link_identifier])其中,参数database为要执行SQL语句的数据库,参数query为要执行的SQL语句,参数link_indentifier为数据库连接标识符。若没有设置该参数,函数将打开上一个已创建的数据库连接;若找不到已打开的数据库连接,则尝试以无参数方式调用mysql_connect()函数创建一个数据库连接。函数在执行成功时根据查询结果返回一个MySQL结果资源号,出错时将返回false。函数会对INSERT、UPDATE和DELETE语句返回true或false来指示执行成功或失败。注意:在使用该函数后,不会自动切换回先前使用mysql_select_db()函数连接的数据库。若想再次使用先前连接的数据库,需要再次手动指定,因此建议在查询时使用database.table的格式来替换该函数。PHP从入门到精通y274y【示例18-6】采用mysql_db_query()函数重写【示例18-5】。代码如下所示。?php@mysql_connect(localhost,root,root)ordie(数据库连接失败!);//连接数据库服务器$myquery=@mysql_db_query(mydb,select*fromuserinfo)ordie(SQL语句执行失败!);//采用mysql_db_query进行查询mysql_close();//关闭数据库连接?分析:在上述程序中,使用mysql_
本文标题:第18章 PHP操作数据库
链接地址:https://www.777doc.com/doc-5317538 .html