$wpdb->insert not working. No Error Msg

笑着哭i 提交于 2019-12-05 21:00:50

问题


Got the lower portion here sorted, but now there's an issue when it inserts the record. I have the NULL value for file formatted as %s for string, but it's not inserting NULL it's inserting [BLOB - 0B]. The column format in the mySQL table is longblob. Any ideas?


this is my first time using $wpdb->insert and it looks like I've missed something.

Here's the loop I'm trying to use. There are currently 2 timestamps in the array.

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';
        }
}
}

I know that $working_time and $working_form are both set properly. $working_time is a long float like 1387175380.9600 and $working_form is a string.

Nothing is being returned, even by the if( !$insert ) check so I'm guessing it's erring somewhere before that point. I know that if( !$result ) will return true because that data does not exist yet.

Found the issue. The get_results query was failing due to a missed period. My HS English teacher was right... a missed period can be a HUGE problem!


回答1:


Maybe your config hides error showing. Have you tried $wpdb->print_error();?




回答2:


If you want to get the last error and last query you can use this properties of $wpdb object:

$wpdb->last_error 

will show you the last error, if you got one.

$wpdb->last_query 

will assist you with showing the last query (where the error occurred)

I hope this will help you out.




回答3:


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

One of the columns inputs may be larger than the column is. Wordpress detects this and will not even send the query to the DB.

The Diff there shows a patch for wp-db you can put in to get more information in the last_error message so it will not be empty.




回答4:


Hopefully, you define global variable = $wpdb.

If your $wpdb not working, and also not showing any error then you must try these three steps.

  1. Print your error using with errors functions.

    echo $wpdb->last_error;

    or

    echo $wpdb->show_errors();

  2. If no error visible then you must print your last query using with last query function.

    echo $wpdb->last_query();

  3. Copy and paste your last query in your Phpmyadmin > Your Database -> Table -> SQL tab, click on Go button, you will definitely get proper solutions(errors) in it.

Thanks,

Rocky Mehta.



来源:https://stackoverflow.com/questions/20605937/wpdb-insert-not-working-no-error-msg

易学教程内所有资源均来自网络或用户发布的内容,如有违反法律规定的内容欢迎反馈
该文章没有解决你所遇到的问题?点击提问,说说你的问题,让更多的人一起探讨吧!