$wpdb->insert()
はfalse
を返しますが、これは私が学んだことは挿入が失敗したことを意味します。今、私はそれが挿入で失敗する理由を知りたいです。
このチケットによると https://core.trac.wordpress.org/ticket/32315 問題は値が長すぎるか、または不適切な文字を含んでいることです。
これが挿入クエリです。
$result = $wpdb->insert('table', $ins_args, array('%d', '%d', '%s', '%s', '%s', '%s'));
いくつかの値はかなり長いため、$ins_args
配列値を表示するのは困難です。特にvalue
という名前のフィールド用です。しかし、そのフィールドにはlongtext
型を使います。そしてこのインサートはよく使われています。そしてほとんどの場合それは成功しています。つまり、エンコーディングやサイズの問題のように感じます。
問題が何であるかをどのようにして知ることができますか? $wpdb->last_error
は空です
行が挿入できなかった場合、$wpdb->insert()
メソッドはfalse
を返します。それ以外の場合は、影響を受ける行数を返します(常に1になります)。
show_errors
とhide_errors
を使用して、エラーエコーのオンとオフを切り替えることができます。
<?php $wpdb->show_errors(); ?>
<?php $wpdb->hide_errors(); ?>
print_error
を使用して、最新のクエリによって生成されたエラー(もしあれば)を出力することもできます。
<?php $wpdb->print_error(); ?>
MySQLによって生成された最新のエラーテキストを含む$last_error
フィールドを使用することもできます。