【发布时间】:2018-01-27 07:57:57
【问题描述】:
说我有这个:
$term_query = "AND t.slug IN ('" . $term_slugs . "') ";
其中$term_slugs id 是这样的数组:
array('foto', 'video');
如果我做一个简单的 implode(),它不会工作,因为它不能是“照片,视频”。所以我应该做一个foreach循环来构建“'照片','视频'”。 但我不能认为这是唯一的方法......真的很不雅。还有其他更聪明的方法吗?
【问题讨论】:
-
json_encode 会救你一命
-
@SolaimanKmail 这是你能给出的最不合适的答案。
-
@SolaimanKmail 可能,但不涉及 SQL 查询参数。
-
$term_query = "AND t.slug IN ('" . $term_slugs . "') ";这很容易受到 SQL 注入攻击。应使用参数化查询和准备好的语句。 -
您必须从可能发生变化的地方获取数据,否则您不会为它使用变量而烦恼。作为一般原则,最好永远不要信任任何输入,无论它是否直接来自用户。另外,您应该将参数用作标准做法,如果不这样做,我什至不会想到。那么就没有任何疑问了。此外,在更基本的层面上,当您遇到包含撇号等内容的尴尬输入时,它可以帮助避免诸如意外 SQL 语法错误之类的烦恼。