PHP变量直接在sql语句中使用时的疑惑
2018-01-31 18:14
393 查看
本意是用sql语句查询,过程中用到了一个PHP脚本中的数组
奇怪的是,在PHP脚本中使用该数组值的时候用的是$user['name'],中括号内带单引号。而sql语句中直接使用该变量(不使用.进行拼接)时,却是$user[name] 不带单引号。
如图:
![](http://img.bbs.csdn.net/upload/201702/19/1487499949_651588.png)
当在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
经查询,得以下三种写法
![](http://img.bbs.csdn.net/upload/201702/19/1487500180_500514.png)
其中第二种为常规写法,即使用拼接法,拼接PHP上的变量
第三种能够达到预期效果
但是浏览器会报一个NOTICE错误
![](http://img.bbs.csdn.net/upload/201702/19/1487500261_878863.png)
虽然得到了解决问题的方法,但是对于PHP这种用法很不理解,google/baidu没有找到答案(也可能是我的搜索方式不对)。
让朋友帮忙在他的电脑上试过,结果与我的一样,基本可以排除是环境orPHP版本的问题。
希望能有高手指点一二,小弟将不胜感激!
![](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif)
答:
你应该先搞清楚 constant(常量)是什么意思
php 对于未被引号括起的字符串,先检查是否是常量,然后才解释为字串
当一个一维数组元素出现在双引号当中时:
"$ar[key]" 正确
"$ar['key']" 语法错
"{$ar[key]}" 使用了未定义常量
"{$ar['key']}" 正确
这是 php 文法分析程序内置的评判标准,没有为什么!
奇怪的是,在PHP脚本中使用该数组值的时候用的是$user['name'],中括号内带单引号。而sql语句中直接使用该变量(不使用.进行拼接)时,却是$user[name] 不带单引号。
如图:
![](http://img.bbs.csdn.net/upload/201702/19/1487499949_651588.png)
当在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
经查询,得以下三种写法
![](http://img.bbs.csdn.net/upload/201702/19/1487500180_500514.png)
其中第二种为常规写法,即使用拼接法,拼接PHP上的变量
第三种能够达到预期效果
但是浏览器会报一个NOTICE错误
![](http://img.bbs.csdn.net/upload/201702/19/1487500261_878863.png)
虽然得到了解决问题的方法,但是对于PHP这种用法很不理解,google/baidu没有找到答案(也可能是我的搜索方式不对)。
让朋友帮忙在他的电脑上试过,结果与我的一样,基本可以排除是环境orPHP版本的问题。
希望能有高手指点一二,小弟将不胜感激!
![](http://forum.csdn.net/PointForum/ui/scripts/csdn/Plugin/003/onion/3.gif)
答:
你应该先搞清楚 constant(常量)是什么意思
php 对于未被引号括起的字符串,先检查是否是常量,然后才解释为字串
当一个一维数组元素出现在双引号当中时:
"$ar[key]" 正确
"$ar['key']" 语法错
"{$ar[key]}" 使用了未定义常量
"{$ar['key']}" 正确
这是 php 文法分析程序内置的评判标准,没有为什么!
相关文章推荐
- 关于怎么在php中定义的sql语句中使用变量
- php使用odbc执行复杂函数遇到的问题,sql语句直接在sqlserver数据库中运行有结果,使用php总是为空
- 在SQL Server中sqlserver,access,excel之间数据如何使用sql语句直接操作
- WebFocus 中直接使用SQL 语句
- 如何在Django中直接使用sql语句
- Sql语句中in(...)使用参数变量
- SQL SERVER CE中 查询语句变量的使用
- 水晶报表使用经验谈2--使用sql语句直接生成dataset做为报表的数据源!
- 在Magento中直接使用SQL语句
- SQL语句中使用变量作为条件。遇到NULL时怎么写
- PHP的foreach语句使用引用变量的问题
- oracle v$sqlarea 分析SQL语句使用资源情况 确认是否绑定变量
- 使用sql语句直接生成dataset做为报表的数据源!
- php被包含文件中的变量是否可在包含它的脚本中直接使用
- sql 语句 附加变量 标点号 的使用
- hibernate 直接使用 sql 语句
- 在php中使用绑定变量的方法(Oracle SQL共享的机制)
- 动态sql语句基本语法(字段名,表名,数据库名之类作为变量时,必须用动态SQL如ALTER TABLE中使用程序传递的参数)
- 数据库基类方法(直接使用SQL语句或存储过程调用)
- ZendFramework直接查询(使用完整sql语句)