,并从命令解释程序中调用: % hello.php hello,world
本章中我们不编写任何独立的脚本。这里编写的所有实例都期望Web 服务器调用它们来生成Web 页面。
下一个脚本有一些实质性的内容,但仍然相当简短。它说明了如何较容易地从PHP 访问MySQL数据库,并在Web 页面中使用查询结果。此脚本在第5 章表达得很简短,它形成了历史同盟Web 站点主页的基础。在我们继续往下做的时候,应该使脚本更精巧一些,但直到
现在为止,它所做的只是显示简短的欢迎消息和当前同盟会员资格的计数:
欢迎消息就是一个静态文本,因此它作为文字的HTML 是最容易编写的。另一方面,会员资格的计算是动态的,而且随时会更改,因此必须在它不
工作时通过查询samp_db 数
据库中的member 表来确定。
在开和闭脚本标记之间的代码文本执行一个简单的任务。首先,它打开了与MySQL服务器的连接,并使samp_db 数据库成为缺省数据库。然后,它发送一个到服务器的查询来确定此刻历史同盟有多少成员(我们将它作为member 表中的行数)。查询结果将作为包括
会员 资格计数消息的一部分显示出来,然后再做处理。
在处理过程中,如果任何一点发生错误,该脚本都会简单地退出。它由于太简单而不产生错误输出,因此把访问该Web 站点的人们搞糊涂了(如果依靠PHP 代码生成整个Web 页面,当因错误而退出,且不产生任何输出时,可能会使访问页面的人非常恼火,因为有些浏 览器将显示“这个页面没有数据”的对话框)。
让我们把该脚本分成几段,看看它是如何工作的。第一步是用mysql_pconnect() 连接到服务器:
上一篇 目录 下一篇=@mysql_pconnect ("pit.viper.snake.net","paul","secret") or exit ();
mysql_pconnect() 把主机名、用户名和口令作为参数。连接建立成功,则返回连接标识符,如果发生错误,则返回FA L S E。如果连接失败,脚本立刻调用exit() 来结束脚本,并且不再产生输出。
在mysql_pconnect() 调用前的?@?字符是什么意思呢?就是“请关闭”的意思。有些PHP 函数在失败时除了返回状态代码之外还写出错误消息。在mysql_pconnect() 情况下,失败的连接导致了下面的消息出现在发送到客户机浏览器的Web 页面上: Warning:MySQLConnection Failed:Access denied for user: 'paul0pit-viper.snake.net' (Using pass
word:YES)
这样很难看,参观我们站点的人们可能不知道它是如何造成的和该怎样处理它。把? @?字符放到mysql_pconnect() 调用的前面,就可以取消这个错误消息,以使我们能在返回值的基础上自己选择如何处理错误。对于该脚本,如果发生错误,最好根本不产生属于会员资格计数的输出。这样,页面将只包含欢迎消息。
任何PHP 函数都可以使用?@?,但以笔者的经验来说,初始的mysql_pconnect() 调用是最可能失败的一个。因此,本章的例子禁止来自该函数中的消息。
将名称和口令嵌入到所有人都能看到的脚本中,可能会使您紧张不安。是这样的,名称和口令出现在发送到客户机的Web 页面上是对的,因为该脚本的内容由其输出的结果替换掉了。然而,如果Web 服务器不知何故配置不当,没有识别出脚本需要由PHP 代码来处理,
它就会将脚本以纯文本发送出去,且会暴露连接参数。在8 . 2 . 1节“使用函数和include 文件”中,将简要地处理这类情况。
mysql_pconnect() 返回的连接标识符可以传递到PHP API 中的几个与MySQL相关的调用中。然而,对于这样的调用,标识符总是可选择的。例如,可以使用下列格式之一来调用mysql_ s e l e c t _ db ( ):
mysql_select_db ($db_name,上一篇 目录 下一篇); mysql_select_db ($db_name);
mysql_pconnect() 与mysql_connect() 的对比函数mysql_pconnect() 与函数my
sql_connect() 相似,都具有主机名、用户名和口