PHP variables in mysql query

时间:2012-06-12 作者:AlxVallejo

关于如何使用$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\' )


                                         );

1 个回复
最合适的回答,由SO网友:Johannes Pille 整理而成

insert a new row:

global $wpdb;
$wpdb->insert( 
    \'wp_mytable\',
    array( \'product\' => $product ),
    array( \'%s\' ) 
);
为了完整起见,$wpdb->update 用于update an existing row 并且需要一个额外的WHERE子句,就像“常规”SQL查询一样。例如:

global $wpdb;
$wpdb->update( 
    \'wp_mytable\',
    array( \'product\' => $product ),
    array( \'product_id\' => 1312 ),
    array( \'%s\' ),
    array( \'%d\' )
);

结束

相关推荐

为什么这段WPDB代码抛出一个空的WPDB错误?

我在写一封信feed reader plugin for wordpress. 我看到了一个我无法理解的DB错误。第一个Icreate a table called user_entries.然后我放了一个sample entry into that table.什么时候I try to delete an entry, 我的调试日志中出现了一个非常奇怪的错误。还没有外键,数据库上没有索引,等等。[2012年5月2日11:21:52]WordPress数据库查询错误从wp\\u wprss\\u user