`

PHP填坑

阅读更多

【前言】

   本文主要记录下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对象
})

 

 

 

 

 

 

分享到:
评论

相关推荐

    windows10环境下php使用selenium+chromedriver来模拟浏览器抓取(坑已填完)

    整个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 Debug手册》是一本专为PHP开发者设计的详尽调试指南,旨在帮助开发者们解决在编程过程中遇到的各种问题,提升代码质量和效率。这本手册深入浅出地讲解了PHP调试的基本概念、常用工具和高级技巧,对于初学者和...

    redis-cli:PHP版本的Redis控制台客户端,方便使用的

    吹牛说自己写一个,于是填坑。 安装方法 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循环的时候,用的是立即执行...

    python动态代码审计

    并且通过比较多实践,我把一些繁琐的过程和步骤做了简化,也填了大大小小的坑。与此同时,我找到了公司内部产品中出现的大大小小的漏洞,虽然这些漏洞没办法分享出来,但是我希望大家能从我今天分享的议题中学到一些...

    我是怎么开发一个小型java在线学习网站的

    一直想做一个自己的网站(非博客),但是又不知道做什么内容的好,又一次看到了w3schools,萌发了开发一个在线java学习的网站,好可以像w3schools网站一样可以在线执行,想法是很好,是要填的坑有点多。  技术选择...

    自动画画-完整开源-人人都能成为你画我猜大神-易语言

    去年有人找我说想研究个自动画画软件,刚好那段时间有空,就研究了下 效果不是打印式一点一点画的,看动图就知道(图片没有加速) 这是当时的成品贴,很多人要求开源,就整理了下开...以上说的缺点有能力也可以自己填坑

    lanstar:一款三栏简约typecho主题

    在一年前我就想做个typecho主题,奈何时间不够充裕,就在前4天,再写python程序休息之余,最终下定决心于抽出时间来填坑,是的,一年前就创建了仓库(但我再重新提交-f push,清楚以前憨憨的黑历史),正因此我的...

    tplay:Tplay是一款基于ThinkPHP5 + Layui2 + Mysql开发的后台管理框架,PHP版本要求提升到5.5,Tplay集成了一般应用所必须的功能模块,为开发者减少重复性的工作,提升开发速度,规范团队开发模式。————记得star哦

    3.调整自定义分页类的位置为app目录下,方便开发者后续直接覆盖升级thinkphp目录Tplay 1.3.3更新说明:这次更新主要是填上个版本搞出来的小坑,如果自行修复过的可以不升级1.修复部分css加载不到的错误2.修复左侧...

    daocaoren:和谐家园

    这次更新主要是填上个版本搞出来的小坑,如果自行修复过的可以不升级 1.恢复部分css加载不到的错误 2.修复漏洞菜单相关js报错的问题 3.调整目录结构(上个版本精简了目录,但有同学反映会影响使用,固调整回来) 4....

Global site tag (gtag.js) - Google Analytics