Using WPDB->Insert()

时间:2015-01-11 作者:Jesse Orange

您好,我一直在用PHP开发,现在才开始向Wordpress过渡。在PHP中,我有这个->

 // Prepare statement
    $sqlstatement = $conn->prepare("INSERT INTO importtest (id, area, country, city, town, postcode, 
        lotarea, price, bedrooms, bathrooms, summary, latitude, longlitude, street, streetno, type, image) 
        VALUES(?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)");
        // Bind the parameters I want (datatype, parameters)
    $sqlstatement->bind_param(\'sssssssssssssssss\', $ID, $area, $country, $city, $town, $postcode, $lotarea, $price, 
                         $bedrooms, $bathrooms, $summary, $latitude, $longlitude, $street, 
                         $streetno, $name, $image);

    // Execute
    $sqlstatement->execute();
我注意到,wpdb的insert采用列名、数据和数据类型中的数组。我的问题是Wordpress是否有一个绑定参数的等价物,因为我确信不能只插入变量?

1 个回复
SO网友:TheDeadMedic

简短回答,否。WPDB 是一个已经存在了一段时间的类(早在WP用于支持PHP 4时),它缺少PHP5驱动程序提供的许多功能,包括参数绑定。

正如你提到的,wpdb::insert 是最接近原始代码的代码:

$wpdb->insert(
    \'importtest\',
    array(
        \'id\'      => $ID,
        \'area\'    => $area,
        \'country\' => $country,
    ),
    array(
        \'%d\',
        \'%s\',
        \'%s\',
    )   
);
它使用wpdb::prepare 转义数据,这在sprintf-类型时尚,支持整数(%d), 浮动(%f) 和字符串(%s):

$wpdb->prepare( "SELECT * FROM importtest WHERE area = %s", \' "foobar" \' );
// SELECT * FROM importtest WHERE area = " \\"foobar\\" "
请注意,与其他驱动程序准备方法一样,不需要引用占位符。

结束

相关推荐

wpdb custom post_type problem

我想在自定义SQL查询中使用自定义帖子类型,但是,当我在我的查询中添加自定义帖子类型时,我没有得到任何结果。我的问题在哪里?这是我试过的代码$top5_ov_performance = $wpdb->get_results(\"SELECT post_id,meta_value FROM \".$wpdb->prefix.\"postmeta WHERE meta_key = \'sd_top5_overclocing\' AND (post_type = \'cpu\') ORDER BY