web-dev-qa-db-ja.com

$ wpdb-> insert()がfalseを返したときにエラーメッセージを表示しますか?

$wpdb->insert()falseを返しますが、これは私が学んだことは挿入が失敗したことを意味します。今、私はそれが挿入で失敗する理由を知りたいです。

このチケットによると https://core.trac.wordpress.org/ticket/323​​15 問題は値が長すぎるか、または不適切な文字を含んでいることです。

これが挿入クエリです。

$result = $wpdb->insert('table', $ins_args, array('%d', '%d', '%s', '%s', '%s', '%s'));

いくつかの値はかなり長いため、$ins_args配列値を表示するのは困難です。特にvalueという名前のフィールド用です。しかし、そのフィールドにはlongtext型を使います。そしてこのインサートはよく使われています。そしてほとんどの場合それは成功しています。つまり、エンコーディングやサイズの問題のように感じます。

問題が何であるかをどのようにして知ることができますか? $wpdb->last_errorは空です

4

行が挿入できなかった場合、$wpdb->insert()メソッドはfalseを返します。それ以外の場合は、影響を受ける行数を返します(常に1になります)。

show_errorshide_errorsを使用して、エラーエコーのオンとオフを切り替えることができます。

<?php $wpdb->show_errors(); ?> 
<?php $wpdb->hide_errors(); ?> 

print_errorを使用して、最新のクエリによって生成されたエラー(もしあれば)を出力することもできます。

<?php $wpdb->print_error(); ?> 

MySQLによって生成された最新のエラーテキストを含む$last_errorフィールドを使用することもできます。

1