25.3. 数据库开发规范

25.3.1. 使用pdo_mysql替代mysql

禁止通过字符串链接拼接sql语句,极容易出现注入漏洞

错误的写法:

$sql = "select * from table where id='".$id."'";
$sql = "INSERT INTO fruit(name, colour) VALUES ('".$name."', '".$colour."')";
			

$sql = "select * from table where id=".$id; 这种写法如果id没有做检查可以100%注入成功

正确的写法

$sql = "select * from table where id=?";
$sql = "INSERT INTO fruit(name, colour) VALUES (?, ?)";
			

使用“?”优势不便于我们排查调试有可能你传入的数字不对称,我们建议使用bindParam() 和 bindValue()

$sql = "select * from table where id = :id";
$sql = "INSERT INTO fruit(name, colour) VALUES (:name, :colour)";
			

25.3.2. 查询规范

禁止使用 * 例如:

select * from member;
			

查询记录是否存在

select count(id) from member where username = :username
			

25.3.3. 结果集使用注意事项

返回数据库查询结果有几种形式

数组形式

Array (

[0] => banana [1] => yellow

)

Array (

[NAME] => banana [COLOUR] => yellow

)
				

对象形式

Object (

Obj->NAME Obj->COLOUR

)
				

正确的使用方式

print($row['name']);
print($row->name);
				

错误的使用使方式

print($row[0]);
print($row[1]);
			

这种方式,有可能当数据库结构改变,增加字段,字段顺序发生变化,输出数据都会出错

原文出处:Netkiller 系列 手札

本文作者:陈景峯

转载请与作者联系,同时请务必标明文章原始出处和作者信息及本声明。

时间: 2024-08-03 01:41:01

25.3. 数据库开发规范的相关文章

PostgreSQL 数据库开发规范

PostgreSQL 数据库开发规范 背景 PostgreSQL的功能非常强大,但是要把PostgreSQL用好,开发人员是非常关键的. 下面将针对PostgreSQL数据库原理与特性,输出一份开发规范,希望可以减少大家在使用PostgreSQL数据库过程中遇到的困惑. 目标是将PostgreSQL的功能.性能发挥好,她好我也好. PostgreSQL 使用规范 命名规范 [强制]库名.表名限制命名长度,建议表名及字段名字符总长度小于等于63. [强制]对象名(表名.列名.函数名.视图名.序列名

【MySQL】数据库开发规范

根据工作经验 总结了一份MySQL 数据库开发规范,对于索引设计概况不完全,这点需要DBA针对开发做数据库优化设计的分享,欢迎各取所需.

MySQL开发规范

  1.库名.表名.字段名必须使用小写字母,并采用下划线分割. a)MySQL有配置参数lower_case_table_names,不可动态更改,linux系统默认为 0,即库表名以实际情况存储,大小写敏感.如果是1,以小写存储,大小写不敏感.如果是2,以实际情况存储,但以小写比较. b)如果大小写混合使用,可能存在abc,Abc,ABC等多个表共存,容易导致混乱. c)字段名显式区分大小写,但实际使用不区分,即不可以建立两个名字一样但大小写不一样的字段. d)为了统一规范, 库名.表名.字段

China.com网站开发规范(1)

规范|开发规范|开发规范 1数据库使用规范1.1服务器上有关数据库的一切操作只能由服务器管理人员进行.1.2程序中访问数据库时使用统一的用户.统一的连接文件访问数据库.1.3原则上每一个频道只能建一个库,库名与各频道的英文名称相一致,库中再包含若干表.比较大的.重点的栏目可以考虑单独建库,库名与栏目的英文名称相一致.1.4命名:(1) 数据库.表.字段.索引.视图等一系列与数据库相关的名称必须全部使用与内容相关的英文单词命名(尽量避免使用汉语拼音),对于一个单词难以表达的,可以考虑用多个单词加下

学ASP少走弯路 参考的ASP开发规范

参考|规范|开发规范 asp开发规范 --写这个东西请多多指教,以后开发时好少吃点苦头. 一.单页编写规范: 切记页面要分模块来写:第一模块:接收参数.[有可能从不同页面提交到同一个页面:也可能出现两个表单项以哪个优先的处理.第二模块:定义全局变量.第三模块:写处理代码(尽量将代码都包含到函数中,详见页面附注一.).--到此asp代码主要部分完成.第四模块:纯html代码,利用储存在全局变量中的值来生成页面.第五(注意):要在页面头部写清页面逻辑.(如何接收.处理.)优点:便于维护.模块独立,便

简单WEB开发规范(修正版)

web|规范|开发规范|开发规范 一.页面设计部分1.img控件 alt:所有展示类图片都要具有能简要描述图片内容的文字说明.2.Input控件 maxlength:所有INPUT控件都需要制定maxlength属性,默认值为数据库中对应的字段的长度. readonly:所有不可更改的信息都要使用readonly属性.3.Form控件 action:所有Form都要指定action,如果提交给本身就指定action="" method:执行不可逆动作使用POST,可逆动作使用GET o

网站开发规范及流程v1.0

规范|开发规范 Web 开发的分散性和交互性,决定了 Web 开发必须遵从一定的开发规范和技术约定,只有每个开发人员都按照一个共同的规范去设计.沟通.开发.测试.部署,才能保证整个开发团队协调一致的工作,从而提高开发工作效率,提升工程项目质量. 一.项目的角色划分 如果不包括前期和后期的市场推广及销售人员,开发团队一般可以划分为项目负责人.程序员.美工三个角色.项目负责人习惯称为项目经理,负责项目的人事协调.时间进度等安排,以及处理一些与项目相关的其他事情.程序员主要负责项目的需求分析.策划.设

大话数据库编程规范

1.1 前言 目前在软件圈内有这么一个现象,就是:DBA不太懂写PL/SQL,而开发人员写的又是五花八门,而且效率不高.如此以来,造成诸多弊端: 1.可读性差.读别人写的一个程序花费的时间,比自己写一个程序的花费时间还要长:非但别人看不懂,时间久了连自己也看不懂了. 2.可维护性差.程序越写越长,越改越烂,像懒婆娘的裹脚布,又臭又长. 3.可移植性差.今天用oracle写一套,明天换成SQL Server的时候再写一套,众多的数据库开发人员在程序的苦海中重复着低级劳动-- 4.效率和性能差.一个

提高数据库开发效果的四项前期准备工作

前期工作一:定义标准的对象命名规范. 一定要定义数据库对象的命名规范,这是笔者一再坚持的一个观点.在开发数据库项目之前,项目开发团队要先讨论确定数据库对象的命名规范.包括函数.过程.表.视图.字段等的命名规则.因为我们在数据库开发过程中会重复的引用这些对象.若没有一个统一的命名规则,只有对象的所有者知道其所代表的含义.那么其他数据库开发人员想引用某个对象的时候,就会茫然不知道从何下手.所以,制定一个统一的数据库对象命名规范,这是数据库设计的一个必要的前期准备工作. 1.利用前缀区分各个对象.在O