$wpdb->插入不工作。没有错误信息

Posted

技术标签:

【中文标题】$wpdb->插入不工作。没有错误信息【英文标题】:$wpdb->insert not working. No Error Msg 【发布时间】:2014-01-03 13:11:27 【问题描述】:

这里的下部已排序,但现在插入记录时出现问题。我将fileNULL 值格式化为字符串的%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 查询失败。我的高中英语老师是对的……错过月经可能是个大问题!

【问题讨论】:

【参考方案1】:

如果你想得到最后一个错误和最后一个查询,你可以使用 $wpdb 对象的这个属性:

$wpdb->last_error 

如果有错误,将显示最后一个错误。

$wpdb->last_query 

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

希望对你有所帮助。

【讨论】:

【参考方案2】:

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

【讨论】:

是的,到处都是。在每个插入语句之后和if(!) 语句内部。它没有返回任何东西。 在其他几个地方添加了它,当然,发现了错误。错误的查询。谢谢你。 不会碰巧知道将数据插入到格式为blob 的列中的数据格式调用吗?需要一个空值,而%s 的字符串不起作用。 尝试使用exit()强制php死机,在函数调用内部放置print_error的输出,没有办法不输出也不死【参考方案3】:

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

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

那里的 Diff 显示了 wp-db 的补丁,您可以在 last_error 消息中获取更多信息,这样它就不会为空。

【讨论】:

不错的利亚姆。很烦人的是 WP 没有这个块的错误信息。【参考方案4】:

希望您已经定义了全局变量$wpdb

如果您的$wpdb 不起作用,并且没有显示任何错误,那么您必须尝试这三个步骤。

    使用 with errors 函数打印您的错误。

    echo $wpdb-&gt;last_error;

    echo $wpdb-&gt;show_errors();

    如果没有错误可见,那么您必须使用最后一个查询函数打印您的最后一个查询。

    echo $wpdb-&gt;last_query();

    复制并粘贴上一个查询到您的 Phpmyadmin > Your Database -> Table -> SQL tab,点击 Go 按钮,您一定会得到正确的解决方案(错误)。

【讨论】:

show_errors() 不需要echo,它只是将类设置为显示错误。当我们激活它时会出现错误。

以上是关于$wpdb->插入不工作。没有错误信息的主要内容,如果未能解决你的问题,请参考以下文章

mysqli_query() 没有响应,甚至 mysqli_error() 也没有给出错误信息

web.xml配置错误页面,及输出错误信息

封装表单自定义错误信息。(阻止默认错误信息提示,添加自定义错误信息提示)

SQL注入

PL/SQL Append_Values 提示给出错误信息

018输出错误信息与调试信息