php_base

apache ssi_modul 开启

server side include,即服务器文件包含,.shtml格式的文件可以使用如下代码引入

1
2
<!--#include file="comm.shtml"-->     //引用绝对路径的文件
<!--#include virtual="comm.shtml"--> //引用相对路径的文件
  • 打开apache httpd.conf文件,搜索mod_include将那一行注释放开
  • 全局搜索text/html,将搜索到的这行与下一行注释放开
  • 重启apache,就可以使用include语法载入文件

php public provite protect区别

  • public表示公有的,类的内部、外部、子类都可以调用
  • private表示私有的,只有类的内部可以调用
  • protected表示受保护的,表示只有类的内部、子类、父类可以调用

isset empty区别

isset();变量是否设置empty();变量是否为空,区别在于当变量设置为0,empty(),会返回false,而isset()只要设置就会返回true,所以谨慎使用

跨域请求头设置

header(‘Content-Type: application/json’); header(‘Access-Control-Allow-Origin: *’)

json格式数据转换

1
2
3
json_encode()//转换为json格式数据,如果包含汉字,会转化为unicode码
json_decode(jsonStr,true)//将json格式数据转化为php变量,如果第二个参数为true,会将对象拆解为数组形式
//类似于js中的JSON.parse与JSON.stringfy

php报错级别设置

通过修改php.ini文件使notice级别不报错

1
2
error_reporting = E_ALL               //开始是这样的
error_reporting = E_ALL & -E_NOTICE //修改后

session销毁步骤

1
2
3
4
5
6
session_start();
$_SESSION = array();
if(isset($_COOKIE[session_name()])){
setcookie(session_name,'',time()-3600,'/');
};
session_destroy();

多表联合查询

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
public function get_goods($where='',$type=2) {
$sql = 'select
a.*,
b.iniqty,
b.iniunitCost,
b.iniamount,
b.totalqty,
c.url
from '.GOODS.' as a
left join
(select
invId,
sum(qty) as totalqty,
sum(case when billType="INI" then qty else 0 end) as iniqty,
sum(case when billType="INI" then price else 0 end) as iniunitCost,
sum(case when billType="INI" then amount else 0 end) as iniamount
from '.INVOICE_INFO.'
where (isDelete=0)
group by invId) as b
on a.id=b.invId
left join(select invId,url
from '.GOODS_IMG.' where (isDelete = 0)) as c
on a.id=c.invId
where
(a.isDelete=0) '.$where;
return $this->mysql_model->query(GOODS,$sql,$type);
}

过滤用户输入,防止sql注入

1
2
3
4
5
6
7
8
function str_enhtml($str) {
if (!is_array($str)) return addslashes(htmlspecialchars(trim($str)));
foreach ($str as $key=>$val) {
$str[$key] = str_enhtml($val);
}
return $str;
}
具体用法为:$result = str_enhtml($this->input->post('username'));

csv文件导入数据库时记得用txt另存改格式

mysql优化小细节

1
2
$sql = "select * from tbmessage_manager where _id = (select max(_id) from tbmessage_manager)";//优化前
$sql = "select * from tbmessage_manager order by _id desc limit 0,1";//优化后