PHP变量直接在sql语句中使用时的疑惑

Ubuntu 18.04下Apache+PHP-FPM多PHP版本共存实战 PHP版本共存是Web运维中的基础性工程需求,其本质是通过进程隔离实现运行时环境解耦。核心原理在于利用PHP-FPM将PHP解释器从Apache模块化形态转为独立服务进程,借助FastCGI协议完成请求路由与上下文传递,从而规避mod_php的进程模型冲突、资源争抢与配置耦合问题。该方案显著提升业务连续性(支撑PHP 5.6至8.1跨代项目并存)、安全合规性(按需启用新版漏洞修复)及团队协作效率(不同项目使用专属PHP运行时)。典型应用场景包括遗留系统兼容、WordPress多站托管、微服务API开发等,尤 阅读详情
本意是用sql语句查询,过程中用到了一个PHP脚本中的数组
奇怪的是,在PHP脚本中使用该数组值的时候用的是$user['name'],中括号内带单引号。而sql语句中直接使用该变量(不使用.进行拼接)时,却是$user[name] 不带单引号。
如图:

当在sql语句中使用$user['name']时,会产生以下报错:
错误信息:
syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in D:\Procedure\PHP\WWW\blog\login.php on line 23

经查询,得以下三种写法

其中第二种为常规写法,即使用拼接法,拼接PHP上的变量
第三种能够达到预期效果
但是浏览器会报一个NOTICE错误


虽然得到了解决问题的方法,但是对于PHP这种用法很不理解,google/baidu没有找到答案(也可能是我的搜索方式不对)。
让朋友帮忙在他的电脑上试过,结果与我的一样,基本可以排除是环境orPHP版本的问题。

希望能有高手指点一二,小弟将不胜感激!












答:


你应该先搞清楚 constant(常量)是什么意思
php 对于未被引号括起的字符串,先检查是否是常量,然后才解释为字串

当一个一维数组元素出现在双引号当中时:
"$ar[key]" 正确
"$ar['key']" 语法错
"{$ar[key]}" 使用了未定义常量
"{$ar['key']}" 正确

这是 php 文法分析程序内置的评判标准,没有为什么!

PHP文件包含漏洞:从原理到实战的攻防解析 文件包含是Web开发中实现代码复用的常见技术,其核心原理是通过动态引入外部文件来执行代码或加载内容。然而,当包含路径由用户输入控制且未经验证时,就会形成文件包含漏洞,攻击者可能利用此漏洞读取服务器敏感文件甚至执行任意代码。从技术价值看,理解文件包含漏洞有助于深入把握Web安全中“数据与代码分离”的基本原则,提升应用安全设计能力。在应用场景上,该漏洞常出现在使用动态模块加载、模板渲染、多语言支持等功能的Web应用中。本文聚焦PHP环境,深入剖析本地文件包含与远程文件包含的利用手法,特别是结合php://fil 阅读详情

相关推荐

MySQL SQL注入攻防全解析:从原理到实战防御策略

SQL注入是一种利用Web应用程序安全漏洞的攻击技术,其核心原理在于攻击者通过构造恶意输入,将数据与代码边界混淆,从而操纵后端数据库执行非预期的SQL命令。这种攻击之所以长期位列OWASP Top 10威胁榜首,是因为它能直接绕过应用层认证、窃取敏感数据,甚至获取服务器控制权,对数据安全构成严重威胁。在MySQL等主流关系型数据库的应用场景中,攻击者常利用联合查询、报错注入、布尔盲注和时间盲注等多种技术组合进行渗透。要构建有效的防御体系,关键在于理解其底层机制,并采用参数化查询(预编译语句)作为核心防线,从

weixin_30932215的博客 460

( ! ) Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_...

sql语句为:$sql="select count(*) from com where a_id=$v['id']"; 出现以下错误: 原因: 变量没有用花括号引起来 改为:$sql="select count(*) from com where a_id={$v['id']}"; 转载于:https://www.cnblogs.com/yolo-bean/...

aexzrgn26470的博客 5587

php异常:Parse error: syntax error, unexpected T_ENCAPSED_AND_WHITESPACE eval()'d code error

PHP会出现eval()'d code error 错误提示的原因一般都是因为模板错误,原因有以下几种情况

记一次php使用eof报错的问题

php版本:php7.2 报错代码: $js = <<<EOF <script type="text/javascript"> $("#print_btn").click(function(){ $("#print_area").printArea(); }) </script> EOF; 运行后报错: 语法解析错误: syntax error, unex

qq_35531201的博客 1163

CXL Virtual Hierarchy (VH) Enumeration理解

在 CXL 3.0 协议中,CXL Virtual Hierarchy (VH) Enumeration 是一种针对 CXL 虚拟层级(Virtual Hierarchy) 设计的设备枚举机制,它允许软件将物理连接的 CXL 设备抽象为多个逻辑层级(虚拟层级),从而实现更灵活的资源管理和拓扑扩展。与传统的 PCIe 枚举相比,CXL VH 枚举在协议特性、拓扑抽象和资源分配机制上有显著差异。本质:VH 是一个逻辑上的设备层级结构,可能与物理连接拓扑不同。

Summer的博客 1001

别再死磕官方文档了!用宿舍开黑的故事,5分钟搞懂Autosar CanNM网管报文

本文通过宿舍开黑游戏的生动类比,深入浅出地解析了Autosar CanNM网管报文的工作原理。从游戏队友协作到汽车ECU节点的同步机制,详细介绍了网管报文的唤醒流程、通信协议及休眠策略,帮助读者快速掌握这一关键技术。

weixin_30463341的博客 261

php常见的错误

1 :Invalid argument supplied for foreach() 循环的数组不是一个有效的数组 2:syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)...

shaonian1996 584

EPLAN二次开发实战指南:从API接口到定制化界面

本文为EPLAN二次开发实战指南,详细介绍了从搭建C#开发环境、理解API接口到创建定制化插件的完整流程。通过实战案例,如批量修改设备属性和设计交互式界面,帮助电气工程师利用EPLAN二次开发实现工作流程自动化与深度定制,从而显著提升设计效率。

weixin_29246195的博客 804

php syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE)

语法错误 错误示范: echo "Name:$row['name']"; 当变量$外有引号包着的时候,里面的索引 不能再加引号!! 正确语法: echo "Name:$row[name]"; 同时也注意,当$外没有引号包着时,里面的索引一定要加引号 上面的这个错误经常在表单传输数据的时候出现 ...

藏经阁 5924

Camera Sensor接口协议全解析(六)聚焦onsemi HiSPi接口的技术突破与应用实践

摘要: Onsemi HiSPi是一种高速并行接口协议,专为高分辨率图像传感器设计,具备1600 Mbps传输速率、低功耗和高兼容性特点。通过对比DVP、MIPI CSI-2等主流协议,HiSPi在工业/医疗领域表现突出,支持动态功耗控制、多ROI和CRC校验。其创新架构包含多PHY设计,提供分组SP、流SP等多种工作模式,满足灵活传输需求。实际应用中,HiSPi在PCB缺陷检测(5μm精度)和液晶面板检测(0.3% Mura检出率)等场景展现卓越性能,成为高速成像领域的关键技术。

GateWorld的博客 1435

AI上推荐 之 隐语义模型(LFM)和矩阵分解(MF)

1. 前言 随着信息技术和互联网的发展, 我们已经步入了一个信息过载的时代,这个时代,无论是信息消费者还是信息生产者都遇到了很大的挑战: 信息消费者:如何从大量的信息中找到自己感兴趣的信息? 信息生产者:如何让自己生产的信息脱颖而出, 受到广大用户的关注? 为了解决这个矛盾, 推荐系统应时而生, 并飞速前进,在用户和信息之间架起了一道桥梁,一方面帮助用户发现对自己有价值的信息, 一方面让信息能够展现在对它感兴趣的用户前面。 推荐系统近几年有了深度学习的助推发展之势迅猛, 从前深度学习的传统推荐模型(协

Miracle8070 1万+

tp3.2报错(T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING

今天在tp3.2中敲了简单的查询代码,但是在model层赋值时,竟然报: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE),expecting identifier (T_STRING) or variable (T_VARIABLE) or number(T_NUM_STRING) 这个错误......    改正前:     

sunny1660的博客 2604

华为OD机考真题 新系统 - 数列求值(Java/Py/C/C++/Js/Go)

华为OD机试真题 新系统【数列求值】,提供C语言、Java、C++、Python、Go、JavaScript源码实现,并提供完整思路讲解,以及在线OJ模拟做题。华为OD机试真题 【数列求值】多语言题解。

qq_45776114的博客 662

PHP学习笔记——从搭建PHP开发环境开始

说到PHP,我脑海中最先浮现的就是《社交网络》中Mark在寝室中用PHP编写Facemash的画面。这也是我学习PHP的原因之一。PHP的优点我就不罗嗦了,看看那些使用PHP+MySQL技术的国内外著名网站就知道了。学习一门语言,就得从搭建开发环境开始。  我使用的是Windows7操作系统,在Windows平台上搭建PHP的开发环境可以下载WAMP(Windows、Apache、MySQL、PH

山鹰的专栏 693

【Matlab】多旋翼无人机视觉伺服跟踪控制程序

本文介绍了基于Matlab的多旋翼无人机视觉伺服跟踪控制程序开发方法。该系统采用视觉感知、坐标转换、伺服控制和仿真验证四个核心模块,通过HOG+SVM目标检测、Shi-Tomasi特征提取和PID双闭环控制算法实现动态目标跟踪。详细阐述了相机标定、目标检测、坐标转换及伺服控制等关键环节的Matlab实现代码,并进行了仿真验证。结果表明该系统在±0.1m的跟踪精度下可实现100Hz的实时处理,适用于室内外复杂场景。文章还提出了工程应用中的优化建议,为无人机视觉伺服系统的开发提供了完整的技术方案。

unber的博客 505

把 ABAP ALV 表头做成两层分组:用 TOP-OF-PAGE 手工绘制双行列标题

摘要:本文介绍了在SAP ALV List中实现双层表头的方法。通过关闭系统默认列标题(no_colhead='X'),在TOP_OF_PAGE事件中手动绘制表头,使用sy-uline和sy-vline绘制线条实现分组效果。关键点包括:1)关闭系统表头;2)在事件处理中分两行输出分组标题和字段名;3)利用系统自动拼接线条的特性绘制表格边框。文中还指出了常见问题如线条自动粘连、颜色不生效等,并提供了完整示例代码和详细解释。这种方法适用于需要对字段进行业务分组的报表场景。

2007 年 ~ 2025 年,深耕 SAP 技术 18 年 258

PHP代码审计:变量覆盖漏洞

原文链接:https://www.shiyanlou.com/courses/895 ...

bylfsj的博客 462

RU DOS版、EFI版32bit/64bit BIOS常用工具

DOS版、EFI版的RU工具,可用来查看IO、MEM、PCI、SMBIOS等资源。亲测在EFI SHELL下可用。

mysql中游标中有变量_Mysql变量、游标及存储过程的应用

Mysql自5.0起就支持存储过程,存储过程通俗的讲就是在一段封装过的SQL,但不仅仅只有SQL那么简单,通常还会有变量、条件判断、循环体,游标等。存储过程的作用在很多场景中,需要将多个表的数据处理,来产生新的我们需要的数据。这些多个表的数据并不能通过连接等查询方式给出,只能通过判断和循环才能产生。这个时候,就可以利用存储过程来实现。此外,存储过程还有一些好处,比如性能比较高,还有能减少网络请求。...

weixin_32190377的博客 422

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

汉书HE8,好用的汇编代码编写工具

汉书HE8,好用的汇编代码编写工具早期编写汇编代码所用功能强大

令PHP初学者的困惑的10个知识点

【1】页面之间无法传递变量 get,post,session在最新的php版本中自动全局变量是关闭的,所以要从上一页面取得提交过来得变量要使用$_GET['foo'],$_POST['foo'],$_SESSION['foo']来得到。当然也可以修改自动全局变量为开(php.ini改为register_globals = On);考虑到兼容性,还是强迫自己熟悉新的写法比较好w...

weixin_34198583的博客 95

Devexpress16.2.6破解工具

Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具Devexpress16.2.6破解工具

sql 判断是否是最后一条游标_Mysql变量、游标及存储过程的应用

php中文网最新课程每日17点准时技术干货分享本文为php中文网认证作者:“齐天大圣”投稿,欢迎加入php中文网有偿投稿计划!Mysql自5.0起就支持存储过程,存储过程通俗的讲就是在一段封装过的SQL,但不仅仅只有SQL那么简单,通常还会有变量、条件判断、循环体,游标等。存储过程的作用在很多场景中,需要将多个表的数据处理,来产生新的我们需要的数据。这些多个表的数据并不能通过连接等查询方...

weixin_42508903的博客 764

mysql 游标 变量_Mysql变量、游标及存储过程的应用

Mysql自5.0起就支持存储过程,存储过程通俗的讲就是在一段封装过的SQL,但不仅仅只有SQL那么简单,通常还会有变量、条件判断、循环体,游标等。存储过程的作用在很多场景中,需要将多个表的数据处理,来产生新的我们需要的数据。这些多个表的数据并不能通过连接等查询方式给出,只能通过判断和循环才能产生。这个时候,就可以利用存储过程来实现。此外,存储过程还有一些好处,比如性能比较高,还有能减少网络请求。...

weixin_31746993的博客 250

学php编程步骤,学php编程步骤是什么?

对于一个计划学习php或者是初学的人来说,我想php学习步骤对他们非常有用了,一个好的学习步骤不但能提升你学习效率,同时也可以增加你的学习信心的,现在就给大家介绍一下php编程的一些学习步骤,希望对大家带来帮助。学php编程步骤是什么?都有哪些呢?1、用集成环境安装PHP环境,一定要记住这一点,不要自己分开去装,尤其是自学的朋友。不然你会觉得很复杂,会没有信心学下去的。也要注意任何高手都不是一蹴而...

weixin_28785657的博客 137

sqlserver如何定义一个静态变量_C代码中如何使用链接脚本中定义的变量?

参考文章:https://sourceware.org/ml/binutils/2007-07/msg00154.html作者:韦东山,2017-1-3 写于百问网论坛原文出处:http://bbs.100ask.org/forum.php?mod=viewthread&tid=16231在链接脚本中,经常有这样的代码:SECTIONS{...... = ALIGN(4);.ro...

weixin_39766071的博客 154

mysql存储过程课堂,Mysql变量、游标及存储过程的应用

Mysql自5.0起就支持存储过程,存储过程通俗的讲就是在一段封装过的SQL,但不仅仅只有SQL那么简单,通常还会有变量、条件判断、循环体,游标等。存储过程的作用在很多场景中,需要将多个表的数据处理,来产生新的我们需要的数据。这些多个表的数据并不能通过连接等查询方式给出,只能通过判断和循环才能产生。这个时候,就可以利用存储过程来实现。此外,存储过程还有一些好处,比如性能比较高,还有能减少网络请求。...

weixin_42121754的博客 179

简单的PHP反序列化

简单的PHP反序列化 Author: badbird Time:2020-12-30 前言: ​ 本文会通过几个例子介绍一下PHP反序列化漏洞的原理和利用方式。 ​ 阅读本文不需要多强的代码能力,但需要有类和对象的概念。 ​ (基础知识,大佬绕行????) 什么是序列化和反序列化? ​ 我将序列化理解为一种规则化。 ​ 大白话讲,就是使千奇百怪的有各种不同属性的对象能以一种同样的形式(字符串形式)存储(序列化),当使用这个对象的时候,就是用规则的逆向将它还原为我们思维中的对象实例(反序列化)。

qq_43756450的博客 417

如何使用Laravel Debugbar?

非常好用的Laravel debug工具,一定要安装 Chrome/FireFox 都会自带一些 debug 工具可以帮助我们 debug 前端,如 CSS、JavaScript… 等,但若要 debug 后端的 Laravel 呢? 如有了 ORM 之后虽然方便,但我们可能对其产生的 SQL 有所疑惑,想深入了解其所产生的 SQL 是否符合我们的需求,这些在Barry v...

weixin_30271335的博客 323
上一篇: MySQL大批量数据插入,PHP之for不断插入时出现缓慢的解决方案及优化(转载)
下一篇: sql查询条件数值为空
puddingpp
博客等级 码龄9年 10粉丝 2原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值