php单双引号对变量解析的影响以及php向mysql插入数据时的变量解析问题详解

一、echo语句中单双引号的区别

我们在学习php时大概都遇到过这样的问题,即经常见到代码中使用echo语句时有时候使用单引号,有时候使用双引号,那么到底该使用哪个呢?它们又有什么区别呢? 
其实,大多数学过php的人都知道,在php中,被单引号引起来的变量不产生变量作用,而双引号引起来的变量产生变量作用。简而言之,单引号不能识别变量,而双引号可以识别变量。如下验证: 

这里写图片描述

代码中,我们声明了一个变量$b,并分别使用双引号和单引号对其进行echo输出,结果显示为:

这里写图片描述

从上图结果中我们可以看出,双引号引起来的变量产生了变量作用,输出了变量$b的值,单引号引起来的变量没有产生变量作用,而是直接讲变量名作为字符串输出。

二、php向mysql插入数据时的变量解析问题详解
说完了echo语句单双引号的变量解析问题现在我们来说说php向mysql插入数据时的变量解析问题。
我们都知道,在mysql中使用sql语句例如查询语句时,凡是遇到非int型的字段都要用单引号引起来,比如:select*from tablename where stu_name=’张三’;同样的,我们在php代码中想查询数据库数据时非int型的变量也要用单引号引起来,例如:

这里写图片描述
看到这里也许有人就会有疑问了,因为我们上一个知识点里面提到了,单引号不能解析变量,这段代码这样写合理吗?答案是合理,在echo语句中单引号不能产生变量作用是众所周知的,这毋庸置疑,但是在php生成sql语句时,普通的非整型变量是可以直接放在单引号中的(博主认为,这里的单引号是sql中的单引号,而非php中的单引号,意义不同不能同日而语),所以说这种写法是没问题的。
但是如果在使用php操作数据库时要匹配的是一个数组变量,不管字段是否为整型,代码都必须为如下写法:
这里写图片描述
否则程序会报错。
这种处理方式有两种解释:
第一:单引号不能解析出数组变量,所以必须先用双引号将其解析出来,再用单引号引起来。(但是字符串连接符的存在就无法接受)
第二:单引号不能解析出数组变量,所以分别将变量前面的所有sql语句和变量后面的所有sql语句用双引号引起来,再将这三部分用连接符连起来赋值给$query。
这里写图片描述

  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值