$ wpdb->插入不起作用。没有错误消息

问题描述 投票:7回答:3

这里的下半部分排序,但现在插入记录时出现问题。我有NULLfile值格式化为%s为字符串,但它不插入NULL它插入[BLOB - 0B]。 mySQL表中的列格式是longblob。有任何想法吗?


这是我第一次使用$wpdb->insert,看起来我错过了一些东西。

这是我正在尝试使用的循环。阵列中当前有2个时间戳。

for ( $i = 0; $i < count($timestamps); $i++ ) {
$working_time = $timestamps[$i];
$working_form = $formnames[$i];

$status_data = array(
    'submit_time' => $working_time,
    'form_name' => $working_form,
    'field_name' => 'lead_status',
    'field_value' => 'new',
    'field_order' => 10001,
    'file' => NULL
);
$status_data_types = array(
    '%f',
    '%s',
    '%s',
    '%s',
    '%d',
    '%s'
);

$result = $wpdb->get_results("SELECT field_value FROM ".$leadtable." WHERE submit_time = ".$working_time);

if(!$result) {              
    $insert = $wpdb->insert($leadtable, $status_data, $status_data_types);
    if( !$insert ) {
            echo 'didn\'t work';
        }
}
}

我知道$working_time$working_form都设置得很好。 $working_time是像1387175380.9600这样的长浮动,而$working_form是一个字符串。

没有任何东西被归还,即使是通过if( !$insert )检查,所以我猜测它在此之前的某个地方犯了错误。我知道if( !$result )将返回true,因为该数据尚不存在。

发现了这个问题。由于错过了一段时间,get_results查询失败了。我的HS英语老师是对的......错过了一段时间可能是一个巨大的问题!

php mysql wordpress wpdb
3个回答
6
投票

也许您的配置隐藏错误显示。你试过$wpdb->print_error();吗?


12
投票

如果要获取最后一个错误和最后一个查询,可以使用$ wpdb对象的这个属性:

$wpdb->last_error 

会告诉你最后一个错误,如果有的话。

$wpdb->last_query 

将帮助您显示最后一个查询(发生错误的位置)

我希望这会帮助你。


3
投票

https://core.trac.wordpress.org/ticket/32315

其中一列输入可能比列大。 Wordpress检测到这一点,甚至不会将查询发送到数据库。

Diff中显示了一个wp-db的补丁,你可以输入它来获取last_error消息中的更多信息,这样它就不会为空。

enter image description here

© www.soinside.com 2019 - 2024. All rights reserved.