分类目录数据库

Mysql中如何建唯一性约束表

1. 单列唯一性约束
a. 直接建表
CREATE TABLE t1 (
id INT NOT NULL ,
uname VARCHAR( 20 ) NOT NULL ,
PRIMARY KEY ( id ) ,
UNIQUE (uname)) ENGINE = MYISAM ;

b. 删除唯一性约束
ALTER TABLE t1 DROP INDEX uname

c. 添加唯一性约束
ALTER TABLE t1 ADD UNIQUE (uname)

2. 2列联合唯一性约束
a. 直接建表
CREATE TABLE t1 (
id int(11) NOT NULL AUTO_INCREMENT,
user int(11) NOT NULL,
subacount varchar(40) NOT NULL,
PRIMARY KEY (id),
UNIQUE KEY user (user,subacount)
) ENGINE=MyISAM DEFAULT CHARSET=utf8;

b. 删除联合唯一性约束
ALTER TABLE t1 DROP INDEX user

c. 添加联合唯一性约束
ALTER TABLE t1 ADD UNIQUE user (user,subacount)

Air应用自定义sqlite数据库文件位置

 

可预防数据库攻击的mysql_real_escape_string函数

下例代码没使用mysql_real_escape_string()函数:

如果用户输入信息如下:
$_POST[‘user’] = “john”;
$_POST[‘pwd’] = “‘ OR ‘‘=‘”;

则SQL查询会成为这样:
SELECT * FROM users WHERE user=’john’ AND password=” OR ”=”

这意味着用户不用输入正确信息也可以通过sql的查询语句,获得相应权限。

上述代码存在着很大的安全隐患,如果改成这样,则会好很多:

mysql_real_escape_string()函数对下列字符产生影响:
● \x00
● \n
● \r
● \
● ‘
● ”
● \x1a

参考资料:http://www.w3school.com.cn/php/func_mysql_real_escape_string.asp

此例已验证。