1:show create table thread的结果 2:.php文件中,的 set names 信息. 3:网页的meta信息 4:editplus打开网页,右下角的的编码信息
例: age tinyint(4) unsigned ,或者 stunum smallint(6) zerofill; Unsigned: 代表此列为无符号类型, 会影响到列的存储范围. (范围从0开始) (不加unsinged, 则该列默认是有符号类型,范围从负数开始)
Zerofill: 代表0填充, 即: 如果该数字不足参数M位, 则自动补0, 补够M位. 1: 如果没有zerofill属性, 单独的参数M,没有任何意义. 2:如果设置某列为zerofill,则该列已经默认为 unsigned,无符号类型.
函数作用域,js有作用域链的概念,在函数内找不到局部变量的时候,就会往外层寻找,在PHP中则不会。 php内,函数调用结束后,就会销毁掉。 因为自定义函数,他会申请一个独立空间,所有的变量都在独立空间内部。
数组类型的索引不必加单双引号 字符串类型的索引必加,而且优先加单引号
路径用/正斜线,因为unix不认反斜线 递归
include_once加了once后,系统会判断,如果包含,则不会再次包含
include require取舍 比如是系统配置,缺少了,网站不让运行,用require 如果是某一段统计程序,不是必须要,用include。 效率上没区别
include、require -->则是效率上的区别,虽然只加载一次,但系统要判断,导致效率降低,尽量不用once
isset是根据值来判断的。如果值为null,就判断不存在。 isset不是函数,是语法结构
shuffle是引用传值
array_reverse整形索引默认不转
注入id,字串符+0变成整形
内容注入,单引号转义addslashes(js中常用),但是对于数组来执行工作量就太大了,mysql_real_escape_string,str_replace $_POST=array('age'=22,'name'='abc'); foreach($_POST as $k=>$v){ if(is_string($v)){ $_POST[$k]=addslashes($v); } } print_r($_POST);
$_GET=array('id'=5,'gender'=>'m"','use'=>array('name'='abc','area'='bj"'));
function abc($k,$v){ $v=addslashes($v)
对于数组就会出问题,要用到递归,系统提供了一个函数array_walk_recursive(&$_GET,'abc')回调函数 054细看 魔术引号php.ini magic_qutes_gpc $_GET,$_POST,$_COOKIE 会被自动转义 测试ini_set('magic_qutes_gpc','on') 合理的判断及转义 if(!get_magic_qutes_gpc()){ function _addslashes($k,$v){ $v=addslashes($v) } array_walk_recursive(&$_GET,'_addslashes'); array_walk_recursive(&$_POST,'_addslashes'); array_walk_recursive(&$_COOKIE'_addslashes'); }
错误报告的配置,1 php.ini error_reporting 2php页面error_reporting()函数来修改
错误级别2进制,从做到右,每位上的1代表一种错误级别,所有唯一则所有错误都报 1111 1111 1111 111 fatal error 致命 0000 0000 0000 001 warning 错误 0000 0000 0000 010 notice 警告 0000 0000 0001 000
define('DEBUG',TRUE); if(define('debug')){ error_reporting(E_ALL); }else{ error_reporting(0)} }
地址栏上先判断是否传入了id,用isset,三元运算,注意防注入
empty判断数据库中是否存在
判断修改删除是否成功,必须以受影响的行数,用mysql_affected_rows
查询失败 mysql_error()
mysql_close;好习惯,要保持
not null auto_increment
不想出现错误提示,PHP.INI设置,error_reporting(E_ALL &~E_NOTICE),设置错误级别
mysql 1366错误,未设置字符集
alter table m1 add birth date not null default '0000-00-00' after 列名 first新建一个列并放在最前面
删除 alter table 表名 drop 列名
修改列类型
alter table 表名 modify 列名 新类型 新参数
修改列名及类型
alter table 表名 change 旧列名 新列名 新类型 新参数
让apache解析html
AddType application/x-httpd-php .html
1064语法错误 not and or and优先级比or高 用_来匹配任意单个字符