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

【Attention Is All You Need】Transformer模型精读

Attention Is All You Need》这篇论文奠定了Transformer模型的基础,为深度学习的发展提供了新的方向。Transformer通过自注意力机制和并行化处理显著提升了计算效率和模型性能。然而,Transformer的广泛应用也带来了新的挑战,如计算资源的消耗和对长序列的处理能力等。随着技术的不断发展,研究人员已经提出了诸如Efficient Transformer、Reformer等变种,旨在提升Transformer的效率和适应性。

Lewiz_124的博客 1499

SPSS操作(五):主成分分析

1、将数据导入spss,并定义变量,将铁路运输业职工人数(人)、城市公共交通业职工人数(人)、邮政业职工人数(人)、电信和其他信息传输服务业职工人数(人)、客运量(万人)、接待入境旅游人数(万人次)、普通高校师生比(%)、星级住宿业营业额(亿元)分别定义为x1,x2,x3,x4,x5,x6,x7,x8 如图: 2、对数据进行标准化处理 ①选择【分析】—【描述统计】—【描述】 ②添加要标准化的变量,勾选【将标准化值另存为变量(Z)】,再点确定 ③返回原来的数据窗口就可以看见标准化后的变量了 3、SPS

My_daily_life的博客 8万+

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

利用R语言通过holtwinters模型进行预测

使用Holt-Winters模型进行预测的第一步是对模型进行拟合。该函数需要两个参数:您的时间序列数据和一个“seasonal”参数,该参数指示您的数据的周期性(例如,如果您的数据按月记录,则应将“seasonal”参数设置为12,因为一年有12个月)。拟合模型后,您可以使用“forecast()”函数进行预测。该函数需要两个参数:您的拟合模型以及您要进行预测的时间段的长度。要使用Holt-Winters模型,您需要安装并加载“forecast”包。以下是进行Holt-Winters模型预测的示例代码。

Mrrunsen的博客 1696

php syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE)

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

藏经阁 5924

量化交易 米筐 因子分组打分(成长因子)

分组动手练习 在米筐上因子数据没有处理,提供的很多因子没有默认分类,存在一些因子没有的情况,我们就选择一些常见的因子。 价值因子 质量因子 成长因子(历史名称) pe_ratio return_on_invested_capital in_revenue pcf_ratio du_return_on_equity inc_eps pb_ratio return_on_asset_net_profit inc_total_asset market_cap return_on_equ

廷益_飞鸟的博客 932

机器学习算法原理:详细介绍各种机器学习算法的原理、优缺点和适用场景

现在,我们将进入到机器学习的核心部分——算法原理。在本篇文章中,我们将详细探讨各种机器学习算法的原理、优缺点和适用场景。

a871923942的博客 2965

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

24、流化催化裂化的分子建模

本文探讨了流化催化裂化(FCC)的分子建模方法,重点分析了如何通过机理建模和模型修剪策略(如反应规则和随机规则)来减少计算复杂度,同时保持化学意义。文章还介绍了定量结构反应性关联(QSRC)在动力学参数确定中的应用,以及结焦对催化剂活性的影响。通过这些方法,FCC反应模型能够在预测产物分布的同时,显著提高计算效率。

s8t9u0v1w的博客 141

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

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

山鹰的专栏 693

lammps案例:堆垛层错能的计算

大家好,我是小马老师。 本文介绍如何使用lammps计算晶体的堆垛层错能。 正常晶体中的原子按照一定的规律排列,原子面按ABCABC……的顺序排列,如下图所示: 当某个原子面被抽出后会形成堆垛层错,如图中的蓝色原子层被抽出,原子面排列变为ABCBCA……: 可通过计算堆垛层错能形成前后的能量差计算堆垛层错能,计算公式为: E0为初始能量 Ef为删除一个原子面后的能量 A为界面面积 下面分享一个lammps计算堆垛层错能的in代码,本代码由Richard Glaze完成,本文稍作修改并进行了注释,以供初

lammps_jiayou的博客 5435

python中有趣的库 freegames 的详细使用

freegames 是一个包含多个简单 Python 游戏的开源库,适合初学者学习 Python 编程和游戏开发。以下是 freegames 的详细介绍和用法示例。

数据知道的博客 3万+

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

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

bylfsj的博客 462

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

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

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

weixin_32190377的博客 422

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

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

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

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

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

weixin_34198583的博客 95

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

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、付费专栏及课程。

余额充值