web-dev-qa-db-ja.com

$ wpdb->挿入が機能していません。エラーメッセージはありません

ここで下部を並べ替えましたが、レコードを挿入するときに問題が発生します。 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英語教師は正しかったです...月経がないことは大きな問題になる可能性があります!

11
KingRichard

たぶんあなたの設定はエラー表示を隠します。 $wpdb->print_error();を試しましたか?

6
murison

最後のエラーと最後のクエリを取得する場合は、$ wpdbオブジェクトの次のプロパティを使用できます。

$wpdb->last_error 

エラーが発生した場合は、最後のエラーが表示されます。

$wpdb->last_query 

最後のクエリ(エラーが発生した場所)を表示するのに役立ちます

これがお役に立てば幸いです。

16
Matija

https://core.trac.wordpress.org/ticket/323​​15

列の入力の1つが、列よりも大きい場合があります。 Wordpressはこれを検出し、クエリをDBに送信しません。

そこにあるDiffは、last_errorメッセージでより多くの情報を取得するために挿入できるwp-dbのパッチを示しているため、空にはなりません。

enter image description here

5
Liam Mitchell

うまくいけば、グローバル変数= $ wpdbを定義します。

$ wpdbが機能せず、エラーも表示されない場合は、次の3つの手順を試す必要があります。

  1. Witherrors関数を使用してエラーを出力します。

    _echo $wpdb->last_error;_

    or

    echo $wpdb->show_errors();

  2. エラーが表示されない場合は、最後のクエリ関数を使用して最後のクエリを印刷する必要があります。

    echo $wpdb->last_query();

  3. 最後のクエリをコピーしてPhpmyadmin>データベース->テーブル-> SQLタブに貼り付け、[移動]ボタンをクリックすると、適切なソリューション(エラー)が確実に表示されます。

ありがとう、

ロッキーメタ。

1
Rocky Mehta