データベースプラグインの更新を管理するために、dbDelta
を使用してコードを変更しました。
古いコード
myfunction(){
...
$query_string = "INSERT INTO {$table_name} {$str_column_names} VALUES {$str_values}";
$is_data_inserted = $wpdb->query( $query_string );
if( !$is_data_inserted ){
$message_error = sprintf( "impossible to insert the data %s for the table %s!",
serialize( $data_item_attrs ),
$table_name
);
$wpdb->show_errors();
wp_error_log( $message_error, "Insert Data Error" );
return false;
}
return true;
}
新しいコード
myfunction(){
...
$query_string = "INSERT INTO {$table_name} {$str_column_names} VALUES {$str_values}";
dbDelta( $query_string );
}
私の問題は、dbDelta
を使用すると、文字「;」を含む挿入が妨げられることです。これは、dbDelta
に「;」があるためです。区切り文字として。
どうすれば修正できますか?
これはこの理由で起こります:
関数
dbDelta
は、最初のパラメーター($queries
)配列または文字列。$queries
は文字列、dbDelta
は ";"で配列を作成します区切り文字として。
dbDelta内
if ( !is_array($queries) ) {
$queries = explode( ';', $queries );
$queries = array_filter( $queries );
}
したがって、解決策は、次のように最初のパラメータとして文字列ではなくクエリの配列を作成することです。
myFunction(){
...
$query_string = array(
0 => "INSERT INTO {$table_name} {$str_column_names} VALUES {$str_values}"
);
dbDelta( $query_string );
}
答えが見つかりました ここ 。