0

我无法将下面函数中的最后一个数组插入表中。我猜是语法问题,但我没有找到它,需要帮助。该函数在 Wordpress 安装上激活插件时插入数据库值:

function my_plugin_install_function() {
global $wpdb;
$table_name = $wpdb->prefix . "revslider_sliders";
$wpdb->insert( $table_name, array( 
           'title' => 'test',
           'alias' => 'test2',
           'params' => array (
                'title' => 'Homepage Slider',
                'alias' => 'homepage-slider',
                'shortcode' => '[rev_slider homepage-slider]',
                'slider_type' => 'fixed',
                'width' => 875,
                'height' => 350,
                'responsitive_w1' => 'NULL',
                'responsitive_sw1' => 'NULL', 
                'responsitive_w2' => 'NULL', 
                'responsitive_sw2' => 'NULL',
                'responsitive_w3' => 'NULL',
                'responsitive_sw3' => 'NULL',
                'responsitive_w4' => 'NULL',
                'responsitive_sw4' => 'NULL',
                'responsitive_w5' => 'NULL',
                'responsitive_sw5' => 'NULL',
                'responsitive_w6' => 'NULL',
                'responsitive_sw6' => 'NULL',
                'delay' => 8000,
                'touchenabled' => 'on',
                'stop_on_hover' => 'on',
                'shuffle' => 'off',
                'load_googlefont' => 'true',
                'google_font' => 'PT+Sans',
                'stop_slider' => 'off', 
                'stop_after_loops' => 0, 
                'stop_at_slide' => 2, 
                'position' => 'center', 
                'margin_top' => 0, 
                'margin_bottom' => 0,
                'margin_left' => 0, 
                'margin_right' => 0, 
                'shadow_type' => 3, 
                'show_timerbar' => 'false', 
                'timebar_position' => 'top',
                'background_color' => '#fff', 
                'padding' => 5, 
                'show_background_image' => 'true', 
                'background_image' => 'NULL', 
                'navigation_type' => 'bullet', 
                'navigation_arrows' => 'verticalcentered', 
                'navigation_style' => 'navbar-old', 
                'nav_offset_hor' => 0, 
                'nav_offset_vert' => 20, 
                'navigaion_always_on' => 'false', 
                'hide_thumbs' => 200, 
                'thumb_width' => 100, 
                'thumb_height' => 50, 
                'thumb_amount' => 5, 
                'hide_slider_under' => 0, 
                'hide_defined_layers_under' => 0, 
                'hide_all_layers_under' => 0,
                'jquery_noconflict' => 'on',
                'js_to_body' => 'false', 
                'output_type' => 'none',
                )
         ), array('%s', '%s', '')
   );
4

2 回答 2

0

文档http://codex.wordpress.org/Class_Reference/wpdb说:

可能的格式值:%s 作为字符串;%d 为十进制数;和 %f 作为浮点数。

您无法将 Array() 添加到数据库。这对我和函数 $wpdb->insert() 没有意义,因为第三个参数的array('%s', '%s', '')第三个值:''需要是以下之一:%s、%d 或 %f

我有两个建议

方法一

您可以更改数据库结构(示例列):

title, alias, params_title, params_alias, params_shortcode, ... , params_output_type

并像这样单独保存参数:

$wpdb->insert( $table_name, array( 
           'title' => 'test',
           'alias' => 'test2',
           'params_title' => 'Homepage Slider',
           'params_alias' => 'homepage-slider',
           'params_shortcode' => '[rev_slider homepage-slider]', //(...)
            ), array('%s', '%s', '%s', '%s', '%s') // Add as many %s or %d as needed
           );

方法二

或者保存参数 array(); 像这样的字符串(见那些“”字符)"array (/* ... */)"

$wpdb->insert( $table_name, array( 
           'title' => 'test',
           'alias' => 'test2',
           'params' => "array (
                'title' => 'Homepage Slider',
                'alias' => 'homepage-slider',
                'shortcode' => '[rev_slider homepage-slider]',
                /* ... */
           )"
         ), array('%s', '%s', '%s')
   );

在 PHP 代码上,您可以从数据库中获取这些代码,使用类似这样的东西

eval("\$params = \"{$row['params']}\";");

该 eval() 将 $params-variable 设置为:

$params = array (
                'title' => 'Homepage Slider',
                'alias' => 'homepage-slider',
                'shortcode' => '[rev_slider homepage-slider]',
                /* ... */
                );

知道了 :)?

于 2013-04-15T02:29:11.373 回答
0

出现了一个疯狂的猜测:

'params' => array (//...
    'output_type' => 'none',
)

在后面去掉最后一个逗号 ( ,)'none'

线变成

'output_type' => 'none'

我不熟悉 WP 函数,但这是一个常见的语法错误。这确实显示了一个 PHP 错误。

于 2013-04-15T01:40:42.850 回答