php基础学习总结(1)
来源:互联网 发布:office2011 mac 破解版 编辑:程序博客网 时间:2024/05/04 12:24
这一节,和各位分享一下一些楼主初学遇到的奇葩错误,也许能帮到你。
写出来也好,正好时刻提醒自己防止错误再犯。
我假定你是看视频(PHP00,张恩民,韩顺平)起步,那么按照视频顺序,应该逐步接触这些。
(2).我们都希望代码一把过,但是往往都是fatal error,warning,甚至有时候parse error ,一大堆,反正楼主以前看到这些单词都会吓尿了。所以,我们承认错误无可避免总会有的。那么我们需要去策略排查错误:
首先,我给出易错点:
- 基本语法错误:分号忘写,错写成中文分号,标点符号用了中文的(单引或双引或逗号),变量命名忘了$,括号不匹配,。。。。。。(奇葩一堆,自己慢慢积累错误吧)错多了自己注意总结哪里容易写错,写成文档,自己不再犯错就行。相信我,错多了就好了,我是这么过来的。
- 编码出问题(乱码):分页面乱码和数据库存储数据乱码。见(3)
- sql语句出错:见(4).(5)
- 经常有undefine valiable(未定义变量报错),除了确实我们没有定义这个变量外(或者我们手残,把变量写错了。比如:$name写成$nmae,这个应该只有剁手能解决了。。。)但还有问题并不是这样,见(6)
接下来,我们需要确定到底是那一块出问题:
用到var_dump, echo , print_r去一个个板块试错。
比如:
(3).编码:(包括编辑器页面编码,数据库编码,数据表单编码,html页面编码,和php页面编码,执行数据的提交与获取,和浏览器页面编码)
- 关于编辑器编码(如果你用notepad),注意写html或者PHP都应该编辑前设置好编码(最后用utf8,通用)
- 关于数据库编码,在建数据库时候一定要选好字符集(选utf8-bin),否则很有可能后面数据乱码。很蛋疼的问题。。。
- 关于数据表单,自己不需要改,如果你在建数据库时已经选好字符集,否则,你需要修改数据表去保持所有页面一致编码(utf8)
- 关于html页面编码,注意在写html(比如用于提交数据或者展示内容的页面)之前,一定要在<meta/>标签中修改字符集为(utf8),否则经常会莫名页面乱码。
- 关于php页面编码控制:使用<header>表头,简单说就是这样:
- 执行数据交互,比如往数据库放数据,从数据库拉取数据,都是必须保证每个页面都执行了这句: mysql_query("set names 'utf8'");
不要轻易省略或是写错这句,等你后来学sql语句,发现这是你提交数据接受数据,在页面保持编码一致的重要保障。
浏览器,像ie你就直接右键调好,火狐略麻烦,但是你一般页面代码都正确处理好编码问题,是不会在浏览器上出现问题的。出问题再调吧。(4).数据库sql语句的错误:
- 注意基本四个写法:多用吧,多多在数据库上操练,在本地写一个提交数据到数据库的php文件,之后在百度上搜大量sql例子,自己在本地慢慢写,提交到数据库。
- 注意单引号和双引号:这一点,初学时楼主深受其害:比如常见这么几个错误:
$sql = "insert into lyb (id, user, title, content, lastdate) values ('', '$_POST[user]', '$_POST[title]', '$_POST[content]', now())" ;
但我们可能会犯三个错误:
(id, user, title, content, lastdate)字段这里自作主张加引号(单引双引都会有人干得出来),其实字段是不允许加引号的。。。
('', '$_POST[user]', '$_POST[title]', '$_POST[content]', now())<pre name="code" class="php">原本我们是要把 $_POST[title]这个值给title,但是经常会用初学者把$_POST[title]的引号弄丢或者写成“”双引。最后系统都会报错。
<pre name="code" class="php">记住,这里只能用单引,还必须每个字段都加单引,不能省(当你字段是数字,可能你省了单引或许在数据库插入没问题,但如果是中文,嘿嘿。。。你会疯的,所以必带单引号)
- SQL语句必须写引号,包括变量的赋值,这是基本的语法,(但有时候初学者会忽略)比如这样:$sql = " ..... ", $name = "章浩";
- sql语句还会有很多问题,比如写错了语句结构,漏写了字段(我们页面插入数据库的字段和数据库表的字段不匹配),那么这种问题在初学sql经常会出现。那么我们如果真的写错了,应该怎样去找出错误呢(当你确定只是sql的问题,其他没错误或者不影响sql排错),那么接下来就该说一下,怎么找SQL语句的错误了。
(5).当sql语句出问题,我们又不好看出来哪里出问题了。首先,我们在出错页面使用var_dump弄出我们的sql语句执行情况:比如这句:
之后,把这句sql弄到数据库,在数据表的sql里面copy一下,看运行正常否。如果不是,从结构和拼写上去查找错误。
(6).在学超全局数组post,get,cookie,seession,凡是涉及到数据的接受,养成习惯,未知数据是否存在,应该用isset或者empty去检测是否为空,例如这样:
<?php if (isset($_POST['submiting'])){ $writer = $_POST['writer'] ; $title = $_POST['title'] ; $content = $_POST['content'] ;}?>
如果你不这样做,就会发现一旦某些变量因为某些原因没有正常赋值,你会得到一大批的 undefine valiable(未定义的变量)。所以为了安全性和程序严谨,我们都要先判断变量非空,再去使用它。对于做一些注册系统啊,做什么函数啊,也应该是这样的思路。先对变量做下检测,符合条件再去使用它。
(7).在学习php基础的时候,养成即使可以用常量(特别是那些可能会改动的字段)使用变量(也不是绝对,看情况定)。比如这里,在连接数据库的conn.php文件里,“主机名”,“用户名”, ”密码“ ,都是显然在不同服务器上,对于不同管理员需要改动的字段,我们应该做成变量名,然后让用户去选择填写(即使我们可能只是在自己笔记本主机上使用。。。)
如果这样写,修改三个字段很麻烦。不好。
<?php <?php $conn = @ mysql_connect('localhost', 'root','') or die("there is a error");mysql_select_db("news", $conn);mysql_query("set names 'utf8'");?>?>
这样就好多了,要改别人就很容易知道怎么做了,写个开发文档也可以很清楚告诉别人改哪几个变量了。
<?php$host ="localhost" ; //根据实际情况填写,这是主机名$name ="root" ; //根据实际情况填写,这是用户名$pass = "" ; //根据实际情况填写,这是密码$conn = @mysql_connect("$host", "$name", "$pass") or die("连接服务器出错") ;$sele = @mysql_select_db("vote_db") or die("数据库出错");mysql_query("set names 'utf8'") ;?>
- php基础学习总结(1)
- PHP学习(1)-基础总结
- php学习(1)---php基础
- PHP安全基础学习与总结
- 总结一下:php的基础学习
- 关于PHP基础的学习总结
- php基础语法总结-1
- php基础总结(一)
- php学习总结(1)
- php编程基础学习(1)
- 学习笔记1(php基础)
- php学习(1)——php基础
- php学习每日总结(1)
- 3DMAX基础学习总结(1)
- react学习总结1--基础(一)
- php学习基础(2)
- PHP课程-Php基础学习1笔记
- PHP学习笔记-PHP语言基础1
- 【Leetcode】three sum
- Nginx+Php-fpm+MySQL+Redis源代码编译安装指南
- python之小项目里学习大问题之一
- [列表] 云计算学习列表
- yeelink HTTP格式学习(二)
- php基础学习总结(1)
- FragmentPagerAdapter无法更新
- 浪潮之巅读后感(1)
- 是多元化的枫华府第的风格的风格的发
- 吐槽
- Vi常用命令
- tableView不能滚动,滚动后会回到第一个可视图
- 【gcj】2014 Round 3
- 关于script,img,iframe等由js脚本发起的跨域