这个问题在这里已经有答案了:
php解析/语法错误;以及如何解决这些问题(18个答案)
如何防止php中的sql注入(28个答案)
两年前关门了。
我有下面一行php,其中设置了连接和所有内容。它给了我以下错误:
( ! ) Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING) in C:\UwAmp\www\dxlphin\index.php on line 174
代码如下:
$sql = "SELECT id, name, price, location FROM products WHERE name LIKE '%'.$_POST['search'].'%'";
有什么指引吗?这个语法对我来说太复杂了,尽管我尽了最大的努力。。。
谢谢,
3条答案
按热度按时间axr492tv1#
在连接之前,你必须用你开始的任何东西来结束引号。所以自从你开始用
"
,你应该以"
连接之前.$_P...
. 你的电话应该是:请注意,从中传递变量是错误的
$_POST
直接到数据库以避免sql注入。4uqofj5v2#
这是更好的选择:
然后准备该语句并用附加的通配符绑定该值(
"%$_POST[search]%"
).如果要将带有字符串键的数组放在这样的字符串中(这很好,但不是像其他人也指出的那样,用于将用户数据插入sql字符串),则需要省略键上的引号,除非已将变量括起来。这就是为什么你会有语法错误。以及连接运算符(
.
)不需要,因为变量已在字符串中。或
但实际上,这并不是sql的发展方向,仅供参考如何使用字符串。
cu6pst1q3#
你把引号和双引号混在一起了
但是,您的代码非常不安全。正如注解中所建议的,您应该使用prepared语句来避免sql注入。
例如,使用pdo(http://php.net/manual/en/class.pdo.php):