$wpdb 类以及以下 php 代码示例中是否实际需要准备好的语句

问题描述 投票:0回答:1

阅读了大量有关准备好的语句,我读到的一件事是,如果您使用全局 $wpdb 类,则不需要预先清理。

下面的代码使用了 $wpdb 类,想知道下面的代码是否安全,或者是否应该引入准备好的语句???

$products = $wpdb->get_results( "SELECT `cart`.`prodid`,
 `cart`.`name`
 FROM `" . WPSC_TABLE_CART_CONTENTS . "` AS `cart`
 INNER JOIN `" . WPSC_TABLE_PURCHASE_LOGS . "` AS `logs`
 ON `cart`.`purchaseid` = `logs`.`id`
 WHERE `logs`.`processed` >= 2
 AND `logs`.`date` >= " . $months[0] . "
 GROUP BY `cart`.`prodid`
 ORDER BY SUM(`cart`.`price` * `cart`.`quantity`) DESC
 LIMIT 4", ARRAY_A ); //get 4 products with top income in 4 last months.

上面的代码是不是应该改成下面的?

 $products = $wpdb->get_results( $wpdb->prepare( "SELECT `cart`.`prodid`,
 `cart`.`name`
 FROM `%s` AS `cart`
 INNER JOIN `%s` AS `logs`
 ON `cart`.`purchaseid` = `logs`.`id`
 WHERE `logs`.`processed` >= 2
 AND `logs`.`date` >= %s
 GROUP BY `cart`.`prodid`
 ORDER BY SUM(`cart`.`price` * `cart`.`quantity`) DESC
 LIMIT 4", WPSC_TABLE_CART_CONTENTS, WPSC_TABLE_PURCHASE_LOGS, $months[0]), ARRAY_A )); //get 4 products with top income in 4 last months.   

阅读 wpdb 类,并介绍一个准备好的语句。

php wordpress class prepared-statement
1个回答
0
投票

您只需要对用户输入查询执行此操作,以避免任何代码注入。例如,如果 $months[0] 来自某个用户输入参数,当然,使用准备语句,但所有变量都是硬编码的,没有必要。

© www.soinside.com 2019 - 2024. All rights reserved.