Wpdb->插入不插入第一个变量

时间:2012-06-01 作者:Ole Henrik Skogstrøm

我这里有一个奇怪的错误。我正在尝试写入wordpress数据库,但是$wpdb->insert 不写入变量的名字。

有人能发现这段代码中的错误吗?

function pay_record_register( $first_name = "NA", 
                            $last_name = "NA", 
                            $payer_email = "NA", 
                            $item_name = "NA", 
                            $gross = "NA", 
                            $currency = "NA", 
                            $payment_status = "NA", 
                            $payment_date = "NA", 
                            $address_street = "NA", 
                            $address_zip = "NA", 
                            $address_city = "NA", 
                            $address_country = "NA", 
                            $address_status = "NA"  ) {

global $wpdb;

$table_name = $wpdb->prefix . \'pay_record\';

$wpdb->insert($table_name, array( \'last_name\' => $last_name, 
                                    \'first_name\' => $first_name,
                                    \'payer_email\' => $payer_email, 
                                    \'item_name\' => $item_name, 
                                    \'gross\' => $gross, 
                                    \'currency\' => $currency, 
                                    \'payment_status\' => $payment_status, 
                                    \'payment_date\' => $payment_date, 
                                    \'address_street\' => $address_street, 
                                    \'address_zip\' => $address_zip, 
                                    \'address_city\' => $address_city, 
                                    \'address_country\' => $address_country, 
                                    \'address_status\' => $address_status
                                ));
}

在我的DB中,除了first\\u name之外,每个变量都打印有默认值(我没有发送任何值)。first\\u name为空。。。

以下是我的表格结构图:enter image description here

我对任何提示、窍门或答案都很在行:)

1 个回复
SO网友:MathSmath

就$first\\u name而言,我认为代码没有任何问题。我猜您的实际DB列名在模式中拼写错误,或者设置不正确(可能是类型、长度等错误)。

这并不能回答您的问题,但我有一个提示:当一个函数有这么多参数时(尤其是当有这么多参数是可选的时),将它们作为数组传递会更干净。这就是WordPress本身处理具有大量参数的函数的方式,并且有一些帮助函数可以使其变得简单。此样式的示例函数可能如下所示:

wpsx_53999_parse_args_example($arr_args) {

    // Deafults array
    $arr_defaults = array(
        last_name => \'NA\', 
        payer_email => \'NA\', 
        item_name => \'NA\', 
        gross => \'NA\', 
        currency => \'NA\', 
        payment_status => \'NA\', 
        payment_date => \'NA\', 
        address_street => \'NA\', 
        address_zip => \'NA\', 
        address_city => \'NA\', 
        address_country => \'NA\', 
        address_status => \'NA\',
    );
    extract( wp_parse_args($arr_args, $arr_defaults), EXTR_SKIP );

    // Now, all the params are extracted as in-scope variables!
    // You can use them like, $first_name, $last_name, etc. from here on out

}
在本例中wp_parse_args() function 将任何传递的值与默认值进行比较,并从本质上协调两者。这个extract() function 将最终数组的所有位拉入局部范围。

这里最大的优点是,当您实际调用函数时,只需传入一组必要的值。因此,您不必用“FALSE”或“NULL”占位符值来填充调用,只需保持正确的顺序即可。

结束

相关推荐

使用wpdb类获取审阅值

我正在使用PHP为一个网站生成一个XML文件,他们在该网站上查看技术产品。在XML文件中,我必须显示产品的评级。出于评级目的,我使用GD Star rating插件。我一直在尝试使用wpdb类来获取每个产品的评级。然而,到目前为止,我还没有任何运气。我在phpmyadmin上使用以下SQL代码,并且我能够获取我想要的任何产品评论的评级SELECT review FROM tableName_gdsr_data_article WHERE post_id = 4627 但当我在PHP中尝试这段SQ