PHP在mysql查询中使用一个带有魔引号的变量

PHP在mysql查询中使用一个带有魔引号的变量,php,mysql,security,magic-quotes,Php,Mysql,Security,Magic Quotes,我有一个mysql查询,它使用数组中的一个值作为WHERE语句的一部分。我应该如何包含这个变量 以下是sql: “和性别={$user\u数组[\'gender\']}'” PHP返回此错误:Parse error:syntax error,意外的T_常量\u ENCAPSED_字符串,应为T_字符串 我打开了magic_quotes。我曾看到一些帖子建议将数组的值设置为另一个变量,但如果我有神奇的引号,似乎没有必要。这是否正确?只需将整个查询放在双引号中,然后像和gender='$user\u

我有一个mysql查询,它使用数组中的一个值作为WHERE语句的一部分。我应该如何包含这个变量

以下是sql:
“和性别={$user\u数组[\'gender\']}'”

PHP返回此错误:
Parse error:syntax error,意外的T_常量\u ENCAPSED_字符串,应为T_字符串


我打开了
magic_quotes
。我曾看到一些帖子建议将数组的值设置为另一个变量,但如果我有神奇的引号,似乎没有必要。这是否正确?

只需将整个查询放在
双引号中,然后像
和gender='$user\u array['gender']'

"AND gender = '{$user_array['gender']}'"
是反斜杠扼杀了它

或者你甚至可以:

"AND gender = '$user_array[gender]'"
或:

演示:


但所有这些加在一起,您应该使用准备好的查询作为替代,您可以在PHP中使用字符串concat并将SQL保留在双引号中,这可能会解决您的问题:

"AND gender = '" . $user_array['gender'] . "'...

@唐尼普。它们不再得到维护。看到了吗?相反,学习,并使用or-将帮助您决定哪一个。如果您选择PDO,。谢谢Neal-不幸的是,在一个仍然使用mysql的代码库上工作_query@DonnyP好吧,现在是最好的时机来转换到一种新的做事方式这里有一个很好的参考网站:哈哈,真的,我们需要立即转换整个基地,如果某些代码正在使用我的PDO,而其余代码仍在MySQL中,这将是一件奇怪的事情。使用第二个选项会给出以下提示:
注意:使用未定义的常量性别-假定的“性别”
您应该做的第一件事是关闭神奇的引号:它们已从PHP5.4.x中删除。然后在PDO(或MySQL)上读取,然后考虑,当使用双引号时,花括号之间的所有东西都被认为是“不引用的”,并且当使用关联数组时,通常不会逃避引用:<代码> $USELARTRONGRON[ [性别] ] /代码>可以(也应该)放置在这些括号之间,如:对不起,但这完全是错误的:该语句中存在歧义:您想要
$user\u array
的字符串值,后跟常规字符串
['gender']
(按照
(array)['gender']
的行给出一些内容),还是想要
$user\u value['gender']
的字符串值?没有办法知道,因此花括号是必要的
"AND gender = '" . $user_array['gender'] . "'...