关于如何使用$wpdb->insert
语法:($table, array($column=>$value),$format)
?
我知道这不管用:
$wpdb->update(\'wp_mytable\',
array(\'product\'=>"$product"));
这也不是:
$wpdb->update(\'wp_mytable\',
array(\'product\'=>$product));
这也不是:
$insert_row = $wpdb->query($wpdb->prepare("INSERT INTO wp_mytable
( product )
VALUES (%s)
",
$product));
其中,echoong$product确实回显了我要插入的字符串。
过去对我有用的另一种语法(但不是通过$wpdb语法)是:
INSERT INTO wp_mytable (\'product\') VALUES \'%s\', $product;
使用上述所有方法,我仍然在数据库中获得一个空白字段值。行已创建,但缺少值。
--Update
$insert_row = $wpdb->insert( \'wp_mytable\',
array( \'product\' => $product,
\'votes\' => 1),
array( \'%s\', \'%d\' )
);
这仍然会在product列下生成一个空白条目。该行计票,但产品字段留空。
以下是我申报$product的方式:
$product = wp_get_object_terms($post->ID,\'product\');
$product = strval($product[0]->name);
我正在选择第一个对象术语的名称,并确保它是一个字符串。
update查询的另一个有趣之处是,尽管WHERE子句有自己的数组,但对于多个子句,它需要AND。如果要为WHERE参数声明变量,则会造成混淆:
$update_vote = $wpdb->update( \'wp_mytable\',
array( \'votes\' => $new_votes ),
array( \'product\' => $product
\'company\' => $company), // WHERE DOES \'AND\' GO?
array( \'%d\' ),
array( \'%s\', \'%s\' )
);