使用PHP / MySQL教程进行数据库处理外文翻译资料

 2022-03-25 07:03

英语原文共 9 页,剩余内容已隐藏,支付完成后下载完整资料


使用PHP / MySQL教程进行数据库处理

由Nadil Sundarapperuma编写

与数据库通信

与其他用于网页开发的脚本语言(即ASP)不同,PHP是开源的跨平台,并且提供了与当今大多数常用数据库(包括Oracle,Sybase,Microsoft SQL Server,MySQL,Postgresql,ODBC(以及其他))的良好连接。 PHP还提供了与各种外部库的集成,这些库允许开发人员从生成PDF文档,访问安全支付服务和生成图形输出到分析XML。

回顾第一原则

在我们跳跃之前,值得回顾一下,以提醒自己我们正在努力实现的目标。 我们拥有两种功能强大的新工具:PHP脚本语言和MySQL数据库引擎。 了解这两者如何配合在一起非常重要。

数据库驱动的网站的全部想法是允许网站的内容驻留在数据库中,并且从数据库中动态提取内容以创建网页供人们使用常规的Web浏览器查看。 因此,在系统的一端,您有一位使用Web浏览器加载的访问者http://www.yoursite.com,并期望查看标准的HTML网页。 另一方面,您拥有网站的内容,其中的一部分位于MySQL数据库中的一个或多个表格中,该数据库仅了解如何响应SQL查询(命令)。

如上图所示,PHP脚本语言是说两种语言的中间人。 它处理页面请求并从MySQL数据库中提取数据,然后动态地将其作为浏览器期望的格式良好的HTML页面进行分发。 使用PHP,您可以将常规HTML中的网站的表现方面(花哨的图形和页面布局)作为“模板”来编写。 如果内容属于这些模板,则使用一些PHP代码进行连接

到MySQL数据库和 - 使用SQL查询检索并显示一些内容。

就这样,你脑子里清楚又清新,这就是当有人访问我们的数据库驱动的网站上的页面时会发生的事情:

  • 访问者的Web浏览器使用标准URL来请求网页
  • Web服务器软件(Apache,IIS或其他)认识到所请求的文件是一个PHP脚本,因此服务器在响应页面请求之前使用其PHP插件解释文件。
  • 某些PHP命令(我们还没有学习)连接到MySQL数据库并请求网页中的内容。
  • MySQL数据库通过将请求的内容发送到PHP脚本来响应。
  • PHP脚本将内容存储到一个或多个PHP变量中,然后使用现在熟悉的回显函数将内容作为网页的一部分输出。
  • PHP插件通过将创建的HTML副本交给Web服务器完成。
  • Web服务器将HTML作为普通的HTML文件发送到Web浏览器,除了不是直接来自HTML文件,而是由PHP插件提供的输出。

用PHP连接到MySQL

在将内容从MySQL数据库中取出以包含在网页中之前,您必须首先知道如何从PHP脚本内建立与MySQL的连接。 对于连接到MySQL的PHP​​支持内置在语言中。 以下PHP函数调用建立连接:

mysql_connect(server_name,username,password);

在这里,地址是运行MySQL服务器软件的计算机的IP地址或主机名(如果它与Web服务器软件在同一台计算机上运行,​​则为“localhost”),用户名和密码是MySQL用户名和密码。

PHP中的函数通常在调用时返回(输出)值。 除了在被调用时做一些有用的事情之外,大多数函数还会输出一个值,并将该值存储在变量中供以后使用。 例如,上面显示的mysql_connect函数返回一个标识已建立连接的数字。 既然我们打算利用这个连接,我们应该坚持这个价值。 以下是我们如何连接到MySQL服务器的例子。

$ dbcnx = mysql_connect(“localhost”,“root”,“mypasswd”);

如上所述,三个函数参数的值可能因MySQL服务器而异。 这里重要的是,mysql_connect返回的值(我们称之为连接标识符)存储在名为$ dbcnx的变量中。

由于MySQL服务器是完全独立的软件,因此我们必须考虑服务器不可用或由于网络中断而无法访问的可能性,或者您提供的用户名/密码组合未被服务器接受。 在这种情况下,mysql_connect函数不会返回连接标识符(因为没有建立连接)。 相反,它返回false。 这使我们能够使用if语句对这些故障做出反应:

$ dbcnx = @mysql_connect(“localhost”,“root”,“mypasswd”); 如果(!$ dbcnx){

echo(“lt;pgt;无法在此处连接到数据库服务器

时间。“);

出口();

}

上面的代码片段中有三个新的技巧。 首先,我们在mysql_connect函数前面放置了@符号。 许多函数(包括mysql_connect)在失败时自动显示丑陋的错误消息。 在函数名称前面放置一个@符号可以让函数默默失败,从而允许我们显示自己的,更友好的错误消息。

接下来,我们在if的条件下在$ dbcnx变量前面放置一个感叹号

声明。 感叹号是PHP否定运算符,它基本上将假值转换为真,或将真值转换为假。 因此,如果连接失败并且mysql_connect返回false,则!$ dbcnx将评估为true,并导致执行我们的if语句正文中的语句。

或者,如果建立了连接,存储在$ dbcnx中的连接标识符将评估为true(在PHP中,除零之外的任何数字都被认为是“真”),所以!$ dbcnx将评估为false,if语句中的语句将不会执行。

最后一个新技巧是退出函数,这是我们遇到的不带参数的函数的第一个示例。 所有这些功能都会导致PHP在此时停止阅读页面。 这是对数据库连接失败的很好回应,因为在大多数情况下,如果没有连接,页面将无法显示任何有用的信息。

下一步,一旦建立连接,就是选择你要使用的数据库。 假设我们想要使用销售数据库。 我们创建的数据库被称为“销售”。

在PHP中选择数据库只是另一个函数调用的问题:

mysql_select_db(“sales”,$ dbcnx);

注意,我们使用包含数据库连接标识符的$ dbcnx变量来告诉函数使用哪个数据库连接。 该参数实际上是可选的。 当它被省略时,该功能将自动使用上次连接打开的链接标识符。 该函数成功时返回true,如果发生错误则返回false。 再一次,谨慎使用if语句来处理错误:

如果(!@mysql_select_db(“sales”))

{

echo(“lt;pgt;目前无法找到销售数据库。lt;/ pgt;”); 出口();

}

注意,这次不是将函数的结果分配给变量,而是检查变量是真还是假,我只是简单地使用函数调用本身作为条件。 这看起来有点奇怪,但它是一个非常常用的捷径。 为了检查条件是真还是假,PHP执行函数,然后检查它的返回值 - 正是我们需要发生的事情。

通过建立连接和选择数据库,我们现在可以开始使用存储在数据库中的数据。

用PHP发送SQL查询

在PHP中,为了向数据库提交查询,我们使用mysql_query函数。

mysql_query(query,connection_id);

这里的查询是一个包含我们想要执行的SQL命令的字符串。 与mysql_select_db一样,连接标识符参数是可选的。

此函数返回的内容取决于发送的查询类型。 对于大多数SQL命令,mysql_query分别返回true或false来表示成功或失败。 考虑下面的例子,它试图创建customers表:

$ sql =“CREATE TABLE Customers(

ID INT NOT NULL AUTO_INCREMENT PRIMARY KEY,

姓氏Varchar(25),名字Varchar(25),创建日期

)';

如果(@mysql_query($ sql)){

回声(“lt;pgt;客户表成功创建!lt;/ pgt;”);

} else {

echo(“lt;pgt;创建Customers表的错误:”mysql_error()

. 'lt;/pgt;');

}

再次,我们使用@技巧来抑制由mysql_query生成的任何错误消息,而是打印出我们自己的更友好的错误消息。 这里使用的mysql_error函数返回一个文本字符串,描述MySQL服务器发送的最后一条错误消息。

对于DELETE,INSERT和UPDATE查询(用于修改存储的数据),MySQL还会跟踪受查询影响的表行(条目)的数量。 考虑下面的SQL命令,将所有名为“Brown”的客户的姓氏设置为“Smith”:

$ sql =“UPDATE Customers SET Surname =#39;Smith#39;WHERE Surname =#39;Brown#39;”;

当我们执行这个查询时,我们可以使用mysql_affected_rows函数来查看受此更新影响的行数:

如果(@mysql_query($ sql)){

echo(“lt;pgt;更新受到影响”。mysql_affected_rows()“rows。lt;/ pgt;”);

} else {

echo(“lt;pgt;执行更新错误:”。mysql_error()“lt;/ pgt;”);

}

SELECT查询的处理方式有点不同,因为它们可以检索大量数据,并且PHP必须提供处理该信息的方法。

处理SELECT结果集

对于大多数SQL查询,mysql_query函数返回true(成功)或false(失败)。 对于SELECT查询来说,这还不够。 您会记得,SELECT查询用于查看数据库中存储的数据。 除了指示查询是成功还是失败之外,PHP还必须接收查询结果。 因此,当它处理SELECT查询时,mysql_query将返回一个标识“结果集”的数字,其中包含查询返回的所有行(条目)列表。 如果查询因任何原因失败,False仍然返回。

$ result = @mysql_query(“SELECT姓氏从客户”); 如果(!$ result){

echo(“lt;pgt;执行查询时出错:”。mysql_error()“lt;/ pgt;”); 出口();

}

如果在处理查询时没有遇到错误,上面的代码会将包含存储在Customers表中的所有姓氏文本的结果集放到变量$ result中。 由于数据库中的姓氏数量没有实际的限制,因此该结果集可能非常大。

我们之前提到,while循环是处理大量数据的有用控制结构。 以下是一次处理结果集中行的代码大纲:

while($ row = mysql_fetch_array($ result)){

//处理行...

}

while循环的条件可能与您习惯的条件不太相似,所以让我解释它的工作原理。 把这个条件全部看作是一个声明:

$ row = mysql_fetch_array($ result);

mysql_fetch_array函数接受结果集作为参数(在这种情况下存储在$ result变量中),并将结果集中的下一行作为数组返回。 如果您不熟悉数组的概念,请不要担心:我们稍后会讨论它。 当结果集中没有更多行时,mysql_fetch_array会返回false。

现在,上面的语句为$ row变量赋值,但同时整个语句本身具有相同的值。 这就是让我们在while循环中使用语句作为条件的原因。 由于while循环一直保持循环,直到它们的条件计算结果为false,循环将发生的次数与结果集中的行数相同,每次循环执行时,$ row都会接受下一行的值。 剩下的就是在每次循环运行时找出如何从$ row变量中获取值。

结果集的行被表示为数组。 数组是一种特殊的变量,它包含多个值。 如果您将变量看作包含值的框,则可以将数组视为带隔间的框,其中每个隔间可以存储单个值。 在我们的数据库行的情况下,隔离区以结果集中的表列命名。 如果$ row是我们结果集中的一行,那么$ row [“JokeText”]是该行的JokeText列中的值。 因此,如果我们想在我们的数据库中打印所有客户的姓氏,我们的while循环应该看起来像这样:

while($ row = mysql_fetch_array($ result)){echo(“lt;pgt;”。$ row [“Surname”]“lt;/ pgt;”);

}

总而言之,下面是PHP网页的完整代码,它将连接到我们的数据库,获取数据库中所有客户的姓氏,并以HTML段落形式显示它们。

lt;htmlgt;

lt;headgt;

lt;titlegt;我们的客户列表lt;/ titlegt;

lt;head gt;

lt;body gt;

lt;?PHP

//连接到数据库服务器

$ dbcnx = @mysql_connect(“localhost”,“root”,“mypasswd”);

全文共8074字,剩余内容已隐藏,支付完成后下载完整资料


资料编号:[15368],资料为PDF文档或Word文档,PDF文档可免费转换为Word

原文和译文剩余内容已隐藏,您需要先支付 30元 才能查看原文和译文全部内容!立即支付

以上是毕业论文外文翻译,课题毕业论文、任务书、文献综述、开题报告、程序设计、图纸设计等资料可联系客服协助查找。