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

时间:2013-12-16 07:58:32

标签: php mysql wordpress wpdb

此处的下半部分已排序,但现在插入记录时出现问题。对于字符串,NULL的{​​{1}}值为file格式,但它不插入%s它插入NULL。 mySQL表中的列格式为[BLOB - 0B]。有什么想法吗?


这是我第一次使用longblob,看起来我错过了什么。

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

$wpdb->insert

我知道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_time1387175380.9600是一个字符串。

即使通过$working_form检查也没有返回任何内容,因此我猜测它在此之前的某个地方犯了错误。我知道if( !$insert )将返回true,因为该数据尚不存在。

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

4 个答案:

答案 0 :(得分:11)

如果您想获取上一个错误和上一个查询,可以使用 $ wpdb 对象的此属性:

$wpdb->last_error 
如果你有错误,

会显示最后一个错误。

$wpdb->last_query 

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

我希望这会帮助你。

答案 1 :(得分:6)

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

答案 2 :(得分:1)

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

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

那里的Diff显示了wp-db的补丁,您可以将其放入last_error消息中以获取更多信息,因此该消息不会为空。

enter image description here

答案 3 :(得分:1)

希望您定义了全局变量= $ wpdb。

如果$ wpdb无法正常工作,并且也未显示任何错误,则必须尝试以下三个步骤。

  1. 使用带有错误功能的错误打印。

    echo $wpdb->last_error;

    or

    echo $wpdb->show_errors();

  2. 如果看不到错误,则必须使用带有上一个查询功能的上一个查询。

    echo $wpdb->last_query();

  3. 将您的最后一个查询复制并粘贴到Phpmyadmin>“数据库”->“表”->“ SQL”选项卡中,单击“执行”按钮,您肯定会在其中获得适当的解决方案(错误)。

谢谢

Rocky Mehta。