【前言】
本文主要记录下PHP练习过程中踩过的坑,随着学习的深入不断补充积累
【主体】
这里记录下最近PHP踩过的坑,很多都是语法性错误
(1)函数结尾忘记加;
例如匿名函数
<?php $show = function($value){ echo $value."你好"; } $show("Tony"); ?>
写了个匿名函数,正常情况应该输出Tony 你好。但是这里报错,显示
解析错误:语法错误,在第13行的C:\ PHPTutorial \ WWW \ index.php中出现意外的'$ show'(T_VARIABLE)
找了半天才测试出是函数没有加;,而错误提示不能精准地定位到出错行
【总结】①函数先写好形势,加上;②在报错行附近找错误源
(2)函数忘记传参
函数规定了参数后就必须传参,除非参数设定了默认值
(3)提交form表单时,如果action为空,那么就会提交到当前页面
(4)①global后可以跟多个变量,例如global $a,$b,$c等等;②global只能传递变量,不能将其变为全局变量
(5)超全局变量$GLOBALS()不仅可以把变量转为全局变量,还可以进行修改
(6)JAVA,JS,PHP等代码都是从上到下,逐行读取的。PHP里若没有exit函数,则会读取完毕
(7)递归函数:自己调用自己
(8) 参数的数据类型
例如,系统内置函数举例copy()拷贝文件,两个参数必须为字符串
<?php if(copy('a.txt', 'b.txt')){ echo "复制成功"; }else{ echo "复制成功失败"; } ?>
(9)echo、print、print_r区别
①echo 是语言结构,不是函数或者方法,使用的时候可以不加括号,多用于单行字符串的输出。效率我记得是比print()高。
②print() 也是单行输出,但他是函数,使用时要把字符串做为参数传给print()函数。有些服务端程序用PHP来写的,输出会用到print();而不用echo ; 这个我不太清楚是什么原因……
③print_r () 可以用来遍历并输出数组的函数,我一般是在调试程序的过程中用来查看数组内容的。也可以用来输出单一的字符串。一般只在调试程序过程中使用。程序写好后,要把这东东去掉。
其他解释:
echo和print都可以做输出,不同的是,echo不是函数,没有返回值,而print是一个函数有返回值,所以相对而言如果只是输出 echo 会更快,而print_r通常用于打印变量的相关信息,通常在调试中使用。
print 是打印字符串
print_r 则是打印复合类型 如数组 对象
(10)修改php.int配置后无效?
所有配置修改,都需要重启Apache服务器才会生效。
(11)PHP入口文件index.php
(12)PHP除了通过php.int配置参数外,还可以通过ini_get()获取,ini_set()设置参数。不过只能作用在当前文件下
(13)MySQL数据库创建后,无法重命名
(14)删除和更新MySQL数据时,需要在尾部添加where条件。否则会对整个表单产生影响。
(15)注意:删除重要数据前要备份
(16)SQL 语句对大小写不敏感。所以查询语句SELECT 与 select 等效。
.(17)获取用户输入框输入时,记得去除两端空格trim()。去除左侧空格ltrim(),去除右侧空格rtrim()
(18)用户密码一般要进行m5加密,以加密方式存到数据库
(19)步骤:连接数据库,判断错误,设置字符集
$connect = mysqli_connect('localhost','root','root','user'); if(!$connect){ die("could not connect:".mysqli_error()); }else{ echo "连接成功<br>"; } mysql_set_charset('$connect','utf-8');//注意:连接点为字符串形式
(20)向上取整
每一页都是整数,包括最后一页。如计算出20.3个页面,则要向上取整函数ceil()
$one = 3; $two = 2; $result = $one / $two; echo ceil($result);//向上取整函数ceil()
(21)连接字符串,因为name等字段类型为char字符串类型,所以在解析的同时要在外面加上' '引号。
所以要写成name=' "$_POST['name']" ',这样才可以解析成name='name'的形式
(22)mysqli_fetch_assoc() 函数从结果集中取得一行作为关联数组 ,取一条记录
(23)隐藏ID的输入框,常用来传值,<input type='hidden' name='id'>
(24)utf-8文档编码;utf8为MySQL编码;
(25)密码必须加密md5(),验证时可以直接比对md5(pwd)即可。
(26)类里的方法结束时不能加;,否则会报错Parse error: syntax error, unexpected ';'
翻译为:语法错误,意外的;,语法错误会导致脚本终止
//声明一个类,实现其接口 class Super implements fly1,run1,water1{ //与抽象类和抽象方法相同,对于声明类里所带的接口, //必须对每个接口都进行一一实现,少一个也不行 public function fly($oil,$height){ echo "飞"; }; public function run($speed,$width){ echo "跑"; }; public function water($depth){ echo "游泳"; }; }
(27)PHP的命名空间语句位置必须在首行,否则会报错。且<?php必须顶行写
<!-- <meta charset="utf-8"> -->①没有顶行 <?php echo "56";②命名空间前有输出 namespace name;//命名空间---相当于创建了一个文件夹 class Test1{ public function __construct(){ echo "666"; } } new Test1(); ?>
以上都会导致报错:Fatal error: Namespace declaration statement has to be the very first statement in the script
翻译为:致命错误:命名空间声明语句必须是第脚本中的第一个语句
(28)面向对象的3大特征:封装、继承、多态
(29)拼接字符串报错
Parse error: syntax error, unexpected '='
翻译为解析错误:语法错误,意外的'='
查找后发现拼接字符串时.和=必须紧紧贴着,否则会解析错误
<?php $name = 'tony'; $name. = 'one';//这里没有紧贴,所以会报语法错误 echo $name; ?>
(30)去除空格或自定义字符
trim() -移除字符串两侧的空白字符或其他预定义字符
ltrim() - 移除字符串左侧的空白字符或其他预定义字符
rtrim() - 移除字符串右侧的空白字符或其他预定义字符
例如:
$sql = update user set name='tony',password='560',
上述插入操作需要去掉右侧的,
rtrim($sql,',')
(31)变量分配要放在模板展示前,否则$this->display()无法展示数据
(32)注意:TP模板中,如果if标签进行两个变量的比较,如果变量时数组并且用的是数组的点形式,则需要在 == 前后加空格,并且在最后的一个变量前加上空格
(33)表单重置
$('.clear').('click',function(){ $('form')[0].reset();//重置reset方法是js方法,所以需要jquery对象转换js对象 })
相关推荐
整个CSDN都是写的python的,python抓取教程一大堆,没必要再传了,这里讲的是PHP的,但可惜的是,整个网络都没讲到最关键一点,导致一直尝试不...压缩包中有文档,填坑的关键点都说到了,软件也打包在里面,开箱即用
url: 'test.php', //仅为示例,并非真实的接口地址 data: { x: '' , y: '' }, header: { 'Content-Type': 'application/json' }, success: function(res) { console.log(res.data) } }) 其中header 中的...
《PHP Debug手册》是一本专为PHP开发者设计的详尽调试指南,旨在帮助开发者们解决在编程过程中遇到的各种问题,提升代码质量和效率。这本手册深入浅出地讲解了PHP调试的基本概念、常用工具和高级技巧,对于初学者和...
吹牛说自己写一个,于是填坑。 安装方法 clone项目代码:git clone 进入文件件:cd redis-cli 切换到当前最新版本标签:git checkout v1.3.2 使用composer安装依赖包:composer更新 使用方法 启动:./redis-cli ...
目前是测试版本,故未接入短信平台,所以手机是收不到验证码的,直接点获取验证码就已经填上了、使用过程遇到的坑丶记录 背景图不生效,改用image或者Base64 执行POST请求异常,将data中的JSON对象格式化为from序列 ...
使用uploadFile-formData传递参数的时候,formData是个三项的JSON,PHP通过$_REQUEST尽然只能接到最后一个参数 PS:怀疑是微信的坑,后来使用的是将其以GET方式提交,才正常接到 在使用for循环的时候,用的是立即执行...
并且通过比较多实践,我把一些繁琐的过程和步骤做了简化,也填了大大小小的坑。与此同时,我找到了公司内部产品中出现的大大小小的漏洞,虽然这些漏洞没办法分享出来,但是我希望大家能从我今天分享的议题中学到一些...
一直想做一个自己的网站(非博客),但是又不知道做什么内容的好,又一次看到了w3schools,萌发了开发一个在线java学习的网站,好可以像w3schools网站一样可以在线执行,想法是很好,是要填的坑有点多。 技术选择...
去年有人找我说想研究个自动画画软件,刚好那段时间有空,就研究了下 效果不是打印式一点一点画的,看动图就知道(图片没有加速) 这是当时的成品贴,很多人要求开源,就整理了下开...以上说的缺点有能力也可以自己填坑
在一年前我就想做个typecho主题,奈何时间不够充裕,就在前4天,再写python程序休息之余,最终下定决心于抽出时间来填坑,是的,一年前就创建了仓库(但我再重新提交-f push,清楚以前憨憨的黑历史),正因此我的...
3.调整自定义分页类的位置为app目录下,方便开发者后续直接覆盖升级thinkphp目录Tplay 1.3.3更新说明:这次更新主要是填上个版本搞出来的小坑,如果自行修复过的可以不升级1.修复部分css加载不到的错误2.修复左侧...
这次更新主要是填上个版本搞出来的小坑,如果自行修复过的可以不升级 1.恢复部分css加载不到的错误 2.修复漏洞菜单相关js报错的问题 3.调整目录结构(上个版本精简了目录,但有同学反映会影响使用,固调整回来) 4....