PHP 和 MySQL 开发的8个技巧

2026-03-01 06:35 栏目: 知识在线 查看( )

LAMP 架构的网站,我以前注重的多是安装/配置方面的,讲述开发的相对较少,因为自己从事开发也少。该篇文章的原文当然也来自:

常见的 PHP 纠错问题是:

在很多 Web 数据库应用中,一些功能往往让用户点击一个连接后,继续停留在当前页面,这样的工作我叫它“单部件查询”。

下面是一个叫做 calling.php 的脚本:

"-//W3C//DTD HTML 4.0 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd" >

Click here!

当用户点击上面的连接时,就去调用 action.php。下面是 action.php 的源码:

// 数据库功能

// 重定向

header("Location: $HTTP_REFERER");

exit;

>

这里有两个常见的错误需要提醒一下:

调用 header() 函数后要包含一个 exit 语句让脚本停止,否则后续的脚本可能会在头发送前输出。

header() 函数常见的一个错误是:

Warning: Cannot add header information - headers already sent...

header() 函数只能在 HTML 输出之前被调用,因此你需要检查 php 前面可能存在的空行,空格等等。

6. reload 的问题及其解决

我以前在写 PHP 程序时,经常碰到页面刷新时,数据库多处理一次的情况。

PHP 和 MySQL 开发的8个技巧第一张图

我们来看 addcust.php:

$query = "INSERT INTO customer

SET surname = $surname,

firstname = $firstname";

$connection = mysql_connect("localhost", "fred", "shhh");

mysql_select_db("winestore", $connection);

$result = mysql_query($query, $connection);

>

"-//W3C//DTD HTML 4.0 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd" >

I've inserted the customer for you.

>

假设我们用下面的连接使用这个程序:

http://www.freelamp.com/addcust.php surname=Smith&firstname=Fred

如果这个请求只提交一次,OK ,不会有问题,但是如果多次刷新,你就会有多条记录插入。

这个问题可以通过 header() 函数解决:下面是新版本的 addcust.php:

$query = "INSERT INTO customer

SET surname = $surname,

PHP 和 MySQL 开发的8个技巧第二张图

firstname = $firstname";

$connection = mysql_connect("localhost", "fred", "shhh");

mysql_select_db("winestore", $connection);

$result = mysql_query($query, $connection);

header("Location: cust_receipt.php");

>

这个脚本把浏览器重定向到一个新的页面:cust_receipt.php:

"-//W3C//DTD HTML 4.0 Transitional//EN"

"http://www.w3.org/TR/html4/loose.dtd" >

I've inserted the customer for you.

这样,原来的页面继续刷新也没有副作用了。

7. 巧用锁机制来提高应用性能

如果大家要紧急运行一个报表,那么,我们可以对表加写锁,防治别人读写,来提高对这个表的处理速度。

8. 用 mysql_unbuffered_query() 开发快速的脚本

这个函数能用来替换 mysql_query() 函数,主要的区别就是 mysql_unbuffered_query() 执行完查询后马上返回,不需要等待或者对数据库加锁。

但是返回的行数不能用mysql_num_rows() 函数来检查,因为输出的结果集大小未知。

解答本文疑问/技术咨询/运营咨询/技术建议/互联网交流

郑重申明:某某网络以外的任何单位或个人,不得使用该案例作为工作成功展示!