不久前我编写了数据库查询,现在我想对其进行改进。
但我做错了什么,我需要帮助。
class tags{
private $wpdb;
public function __construct(){
global $wpdb;
global $table;
$this->wpdb = $wpdb;
$table = \'tags\';
$this->table_tags = $table;
}
public function some(){
// If I delete the value after the decimal point then it does not work. Is correct query and what use this query witch "WHERE"?
$how_much = $this->wpdb->get_var($this->wpdb->prepare("SELECT COUNT(*) FROM `".$this->table_tags."`", $this->table_tags));
}
public function some2(){
//here i need display some, work but I do this correct?
$tags = $this->wpdb->get_results($this->wpdb->prepare("SELECT * FROM `".$this->table_tags."` ORDER BY id DESC LIMIT %d, %d", $from, $in_site), ARRAY_A);
}
public function some3(){
// here i want add some, work too
$data = array( \'name\' => $name );
$data2 = \'%s\';
$this->wpdb->query($this->wpdb->prepare(" INSERT INTO `".$this->table_tags."` (`name`) VALUES (".$data2.") ", $data ));
}
public function other(){
// is correct? delete
$this->wpdb->delete($this->table_tags, array(\'id\' => $id));
// and update
$this->wpdb->update( $this->table_tags, array( \'name\' => $name ), array( \'id\' => $id ));
}
}
还有这个问题。
在里面$wpdb->delete
和$wpdb->update
未使用prepare()
和query()
?
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成
您应该使用prepare
仅当您使用SQL查询时-此函数接受查询和参数,并返回一个由给定参数填充的安全SQL查询。
其结果是SQL查询。因此,无论何时创建SQL查询并在其中放置一些参数,都可以(而且应该)使用它。
具有$wpdb->delete
或$wpdb->update
您不需要创建任何包含SQL查询的字符串-这两个函数都只接受参数以及创建并运行查询-因此无需准备。
如果您使用$wpdb->insert
, 那么你也不需要准备——没有什么需要准备的。
但是,如果您像在代码中那样使用原始SQL进行插入,那么是的,您应该始终准备这样的查询。