当我只是匹配表列时,是否需要在Wordpress中运行准备好的查询?

时间:2016-10-14 14:05:21

标签: php mysql wordpress

简单的问题 - 我明白如果我想在Wordpress中运行这种类型的查询:

SELECT * FROM tableA WHERE variable1 = $var1

...然后我需要使用'prepare',就像这样:

$my_query = $wpdb->get_results($wpdb->prepare("SELECT * FROM tableA 
WHERE variable1 = %s", $var1) );

但是,当我想要进行此类查询时:

  • 在列上加入两个表
  • 并且不使用变量
像这样:

SELECT * FROM tableA, tableB WHERE tableA.some_col = tableB.some_other_col

......'应该'我:

  1. 仍然使用某种形式的'prepare'语句来防止SQL注入
  2. 或者可以执行以下操作:

    $my_query = $wpdb->get_results("SELECT * FROM tableA, tableB WHERE 
    tableB.some_col = tableB.some_other_col");
    

2 个答案:

答案 0 :(得分:1)

你不需要那里准备好的语句,因为没有人可以使用这段代码进行sql注入。

如果您只选择两个表中的所有内容而不提供任何变量,您可以忘记准备好的语句:)

答案 1 :(得分:1)

我认为你应该坚持

  

$ wpdb->制备

即使您没有任何未经过清理的参数也要传递给查询。 你应该这样做的原因很少:

  1. 这是最佳做法;
  2. 一致性。如果您将对所有查询使用相同的方法;
  3. 如果将来需要将参数传递给此查询,对您来说会更容易。
  4. 您可以在Should I use wpdb prepare?

    找到关于此的讨论