您的位置:首页 > 编程语言 > PHP开发

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

2018-01-31 18:14 393 查看
本意是用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 文法分析程序内置的评判标准,没有为什么!
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: