qli_real_escape_string
$data[$key] = $db->mres($value);
}
$fields = implode('','' , array_keys($data));
$values = "''" . implode("'',''" , array_values($data)) . "''";
//Final query
$query = "INSERT INTO {$table}($fields) VALUES($values)";
return $db->query($query);
}
$data = array(''name'' => $name , ''email'' => $email , ''address'' => $address , ''phone'' => $phone);
insert_record(''users'' , $data);
看到了吗? 这样会更易读和扩展. record_data 函数小心的处理了转义.
最大的优点是数据被预处理为一个数组, 任何语法错误都会被捕获.
该函数应该定义在某个database类中, 你可以像 $db->insert_record这样调用.
查看本文, 看看怎样让你处理数据库更容易.
类似的也可以编写update,select,delete方法. 试试吧.
27. 將数据库生成的内容缓存到静态文件中
如果所有的内容都是从数据库获取的, 它们应该被缓存. 一旦生成了, 就將它们保存在临时文件中. 下次请求该页面时, 可直接从缓存中取, 不用再查数据库.
好处:
>>节约php处理页面的时间, 执行更快
>>更少的数据库
查询意味着更少的mysql连接开销
28. 在数据库中保存session
基于文件的session策略会有很多限制. 使用基于文件的session不能扩展到集群中, 因为session保存在单个服务器中. 但数据库可被多个服务器访问, 这样就可以解决问题.
在数据库中保存session数据, 还有更多好处:
>>处理username重复登录问题. 同个username不能在两个地方同时登录.
>>能更准备的
查询在线用户状态.
29. 避免使用全局变量
>>使用 defines/constants
>>使用函数获取值
>>使用类并通过$this访问
30. 在head中使用base标签 没听说过? 请看下面:
<head>
<base href="/uploadfile/201306/18/821731523.jpg" />
</body>
</html>
base 标签非常有用. 假设你的应用分成几个子目录, 它们都要包括相同的导航菜单.
www.domain.com/store/home.php
www.domain.com/store/products/ipad.php
在首页中, 可以写:
<a href="home.php">Home</a>
<a href="products/ipad.php">Ipad</a>
但在你的ipad.php不得不写成:
<a href="../home.php">Home</a>
<a href="ipad.php">Ipad</a>
因为目录不一样. 有这么多不同版本的导航菜单要维护, 很糟糕啊.
因此, 请使用base标签.
<head>
<base href="http://www.domain.com/store/">
</head>
<body>
<a href="home.php">Home</a>
<a href="products/ipad.php">Ipad</a>
</body>
</html>
现在, 这段代码放在应用的各个目录文件中行为都一致.
31. 永远不要將 error_reporting 设为 0
关闭不相的错误报告. E_FATAL 错误是很重要的.
ini_set(''display_errors'', 1);
error_reporting(~E_WARNING & ~E_NOTICE & ~E_STRICT);
32. 注意平台体系结构
integer在32位和64位体系结构中长度是不同的. 因此某些函数如 strtotime 的行为会不同.
在64位的机器中, 你会看到如下的输出.
$ php -a
Interactive shell
php > echo strtotime("0000-00-00 00:00:00");
-62170005200
php > echo strtotime(''1000-01-30'');
-30607739600
php > echo strtotime(''2100-01-30'');
4104930600
但在32位机器中, 它们將是bool(false). 查看这里, 了解更多.
33. 不要过分依赖 set_time_limit
如果你想限制最小时间, 可以使用下面的脚本:
set_time_limit(30);
//Rest of the code
高枕无忧吗? 注意任何外部的执行, 如系统调用,socket操作, 数据库操作等