Wpdb准备插入表不起作用

时间:2013-06-21 作者:Pluto

我按照介绍使用prepare向表中插入一些数据。代码如下:

    $wpdb->query(
         $wpdb->prepare(
                "INSERT INTO {$wpdb->prefix}awpcp_adphotos VALUES
                (ad_id, image_name, disabled, isprimary)
                (%d, %s, %d,%d)",
                $ad_id,
                $ad_img,
                0,
                0));
此外,disabled和is\\u primary应为布尔值。但我不确定这里的数据类型是什么。

我也试过了

$wpdb->insert(
\'{$wpdb->prefix}awpcp_adphotos\', // Table name
array(
    \'ad_id\' => $ad_id,
    \'image_name\' => $ad_img,
    \'disabled\' => 0,
    \'is_primary\' => 0,
), // Columns
array(
    \'%s\',
    \'%d\',
    \'%d\',
    \'%d\'
) // Explicit formatting
);

但我还没有任何运气。运行代码时没有错误消息。

好吧,我在其他地方找到了答案。应该是这样的:

    $wpdb->insert($wpdb->prefix.\'awpcp_adphotos\', array(
 \'ad_id\' => $ad_id,
 \'image_name\' => $image_name,
 \'disabled\' => $disabled,
 \'isprimary\' => $isprimary,
  ));
我对前缀格式感到困惑。

1 个回复
最合适的回答,由SO网友:Krzysiek Dróżdż 整理而成

我很确定第一个SQL查询不是正确的SQL(insert有不同的语法);)它应该是:

INSERT INTO {$wpdb->prefix}awpcp_adphotos (ad_id, image_name, disabled, isprimary) VALUES (%d, %s, %d,%d)
在第二个例子中,我几乎可以肯定ad_id 不是字符串,并且image_name 不是数字。当然,我只是猜测,因为我还没有看到这个表定义。

请记住,您始终可以打开wpdb的错误报告。只要在代码中输入这一行,您就会看到wpdb错误:

$wpdb->show_errors();

结束