本意是用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 文法分析程序内置的评判标准,没有为什么!