[web]mySQL and PHP

mySQL
建立数据库 CREATE DATABASE databasename
选择数据库 USE databasename
从cmd进入数据库 mysql -u root -p databasename
建立表 CREATE TABLE tablename(col1 type1,col2 type2........)
删除表 DROP TABLE tablename
删除行 DELETE FROM table WHERE ....如果不加WHERE将删除整个表,因此几乎必须加上WHERE
查看表结构 DESCRIBE tablename
插入行 INSERT INTO table(colname1,colname2...) VALUES(colvalue1,colvalue2...)注意列名不用加引号,值要加。
改变表结构 ALTER TABLE tablename ADD CLOTYPE
如:ALTER TABLE email_list ADD id INT NOT NULL AUTO_INCREMENT FIRST;类型为INT非空自动憎长
新增主键ADD PRIMARY KEY(id)
修改列名或类型或删除列 ALTER TABLE tablename DROP COLUMN/CHANGE COLUMN
命令行登陆MYSQL mysql -u root -p  (如果需要登陆其他服务器的-h IP地址)
外键:是表中的一个键,它是另外一个表的主键。含有外键的表成为主表,外键作为主键的表成为外表。
GRANT赋予用户权限 GRANT privilege [cloumn] ON item TO username WITH [grantoption] 如MAX_CONNECTIONS_PER_HOUR n等
REVOKE命令用于撤销用户权限,语法与GRANT差不多
show tables 显示数据库的所有表 show databases 显示所有数据库
CREATE INDEX indexname ON tablename 增加索引(可提高效率)
insert delay可暂时缓存数据,等服务器不繁忙的时候才插入
完全关联(内连接):关联n个表,需要用n-1个where a.x=b.x来关联,显示多个表合并的笛卡尔集。也可以使用using cloname来关联,要求表有相同的列名
左(右)关联(外连接):显示左(右)表中所有列值,就算右表中为空也列出!(主要用于找出右表的空值时用)
a AS b为表和列取别名。当找同一表中相同的项目时必须使用别名。如select c1.name,c2.name from col as c1,col as c2 where c1.city=c2.city
order by 属性.按一定属性的顺序输出,默认是升序。如降序则order by 属性 desc
统计值avg,count,max,min,sum。select avg(price) from list group by customerid 打印平均价格.  一般与group by一起使用显示分组平均
group by 后可加having 条件。having相当于分组的where。select avg(price) from list group by customerid having price > 50
limit 2,3。 mysql独有的语法,一共只返回所有结果中的3行,从第二行开始。
子查询操作符ANY,IN,ALL。 select c from t where c> ANY(select ...) or c in (select ...) or c>ALL(select ...)
EXISTS NOT EXISTS子查询中有一个或以上的名中行,则返回true
update tablename set price=price*1.1 更新数据库
alter table tablename add/modify/drop .....修改表属性
delete from tablename 删除表的行
修改列名alter table tablename change oldname newname coltype
select distinct xx from.... 只显示不同的结果去除重复结果。  而UNIQUE是在建立表的时候用的,用于防止插入重复数据。
LIKE 相当于宽松的=操作。_代表一个字符 %代表0或多个字符
source 路径    导入.sql文件
  
PHP
isset()验证变量是否存在 empty()验证变量是否为空,FALSE等。
define('THREE',3); 定义常量,常量不需用$符号。
.操作符,用用于连接字符串(或字符串变量)
===三等号操作,只有左右操作数值和类型都相等时才返回true
instanceof()用于检查实例是否属于某个类
isset()检查变量是否存在
empty()检查是否为空、NULL
建立数组$myarr=array('tom','jak','kk');  PHP也支持python的range()函数,字典的话array('a'=>1,'b'=>2)
each(数组) 逐次返回数组类容  while($ele=each($animal)) echo $ele['value']
更常用的是list($a,$b)=each($animal)把返回值分别付给a b
foreach($数组 as $个体),字典的话foreach($数组 as $key=>$value)
用完each和foreach后数组指针已经到达最后,必须使用reset($animal)才能重新使用each
使用trim函数消除字符串前后的空格来防止SQL注入。 因为注入一般使用-- (有个空格)来注释后面的SQL语句来注入。
再利用mysqli_real_escape_string()会自动将有危险的字符如-- ‘’进行转义,防止注入
addslashes()在符号前面自动加反斜杠进行转义。确保安全。
好的insert语句风格是id使用auto_incease,approved选项默认为0而不是每次插入0. 语法:default '0' 防止注入直接跳过审批流程
使用is_xx()等函数来确保表单的数据是否真的是数字防止注入
使用setcookie()之前不能用echo,<html>要放setcookie之下,<php?>之前不能有空行。
header('Location: index.php ');跳转到某页
@unlink(filename) unlink用于删除一个文件,@放在函数前的作用是不显示错误信息。
使用文件上传表单文件会传到一个临时文件夹,有临时名字。需要使用move_upload_files()函数把临时文件移到指定文件夹。
explode(分隔符,字符串) 分割字符串函数 implode(分隔符,数组) 把数组组合成一个字符串
使用双引号输出数组变量 要不使用大括号把变量括住 {$a['dd']}或者中括号里不使用单引号a[dd]
使用URL传递变量<a herf="index.html?var1=a&var2=b&var3=c">Go Index</a>   连接目标?变量1&变量2...使用$_GET['var1']来获取
preg_match(reg,string) 如果有匹配返回1,否则0
preg_replace(reg,replacement,string)替代匹配内容
原文地址:https://www.cnblogs.com/iyjhabc/p/2987465.html