PHP警告:wpdb::prepare()WPML插件缺少参数2
突然,我在wordpress项目的特定后端页面上出现错误: 警告:wpdb::prepare()缺少参数2,在第463行的…/wp content/plugins/wpml media/inc/wpml_media.class.php中调用,在第992行的…/wp includes/wp-db.php中定义 这将是: wpml_media.class.phpPHP警告:wpdb::prepare()WPML插件缺少参数2,php,wordpress,plugins,warnings,wpml,Php,Wordpress,Plugins,Warnings,Wpml,突然,我在wordpress项目的特定后端页面上出现错误: 警告:wpdb::prepare()缺少参数2,在第463行的…/wp content/plugins/wpml media/inc/wpml_media.class.php中调用,在第992行的…/wp includes/wp-db.php中定义 这将是: wpml_media.class.php // get language of their parents if(!empty($missing_langs)){
// get language of their parents
if(!empty($missing_langs)){
$results = $wpdb->get_results($wpdb->prepare("
SELECT p.ID, t.language_code
FROM {$wpdb->posts} p JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id AND t.element_type = CONCAT('post_', p.post_type)
WHERE p.ID IN(".join(',', $missing_langs).")
"));
foreach($results as $row){
$parent_langs[$row->ID] = $row->language_code;
}
}
function prepare( $query, $args ) {
if ( is_null( $query ) )
return;
$args = func_get_args();
array_shift( $args );
// If args were passed as an array (as in vsprintf), move them up
if ( isset( $args[0] ) && is_array($args[0]) )
$args = $args[0];
$query = str_replace( "'%s'", '%s', $query ); // in case someone mistakenly already singlequoted it
$query = str_replace( '"%s"', '%s', $query ); // doublequote unquoting
$query = preg_replace( '|(?<!%)%f|' , '%F', $query ); // Force floats to be locale unaware
$query = preg_replace( '|(?<!%)%s|', "'%s'", $query ); // quote the strings, avoiding escaped strings like %%s
array_walk( $args, array( $this, 'escape_by_ref' ) );
return @vsprintf( $query, $args );
}
和wp db.php
// get language of their parents
if(!empty($missing_langs)){
$results = $wpdb->get_results($wpdb->prepare("
SELECT p.ID, t.language_code
FROM {$wpdb->posts} p JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id AND t.element_type = CONCAT('post_', p.post_type)
WHERE p.ID IN(".join(',', $missing_langs).")
"));
foreach($results as $row){
$parent_langs[$row->ID] = $row->language_code;
}
}
function prepare( $query, $args ) {
if ( is_null( $query ) )
return;
$args = func_get_args();
array_shift( $args );
// If args were passed as an array (as in vsprintf), move them up
if ( isset( $args[0] ) && is_array($args[0]) )
$args = $args[0];
$query = str_replace( "'%s'", '%s', $query ); // in case someone mistakenly already singlequoted it
$query = str_replace( '"%s"', '%s', $query ); // doublequote unquoting
$query = preg_replace( '|(?<!%)%f|' , '%F', $query ); // Force floats to be locale unaware
$query = preg_replace( '|(?<!%)%s|', "'%s'", $query ); // quote the strings, avoiding escaped strings like %%s
array_walk( $args, array( $this, 'escape_by_ref' ) );
return @vsprintf( $query, $args );
}
函数prepare($query,$args){
if(is_null($query))
返回;
$args=func_get_args();
数组移位($args);
//如果args作为数组传递(如在vsprintf中),则将其上移
if(isset($args[0])&&is_数组($args[0]))
$args=$args[0];
$query=str_replace(“'%s'”,%s',$query);//以防有人错误地引用了它
$query=str_replace(''%s','%s',$query);//双引号取消引号
$query=preg_replace('|)(?
谢谢关于这个问题有更多的信息。基本上,不要惊慌,因为这只是一个警告,所以没有任何东西会真正损坏
如果您希望修改wpml媒体插件以消除此错误,则上面链接中的开发者信息应该会有所帮助。如果您只是希望警告消失,那么我引用:
首先,如果您是一个用户,并且希望消除这些错误,那么应该在PHP中关闭错误的显示。有很多方法可以做到这一点,例如在PHP.ini、.htaccess等中。为此,您可以将其放在wp-config.PHP中。(请注意,在生产站点上隐藏错误是一种很好的做法。)
关于这个问题还有更多的信息。基本上,不要惊慌,因为这只是一个警告,所以没有任何东西会真正崩溃
如果您希望修改wpml媒体插件以消除此错误,则上面链接中的开发者信息应该会有所帮助。如果您只是希望警告消失,那么我引用:
首先,如果您是一个用户,并且希望消除这些错误,那么应该在PHP中关闭错误的显示。有很多方法可以做到这一点,例如在PHP.ini、.htaccess等中。为此,您可以将其放在wp-config.PHP中。(请注意,在生产站点上隐藏错误是一种很好的做法。)
关于这个问题还有更多的信息。基本上,不要惊慌,因为这只是一个警告,所以没有任何东西会真正崩溃
如果您希望修改wpml媒体插件以消除此错误,则上面链接中的开发者信息应该会有所帮助。如果您只是希望警告消失,那么我引用:
首先,如果您是一个用户,并且希望消除这些错误,那么应该在PHP中关闭错误的显示。有很多方法可以做到这一点,例如在PHP.ini、.htaccess等中。为此,您可以将其放在wp-config.PHP中。(请注意,在生产站点上隐藏错误是一种很好的做法。)
关于这个问题还有更多的信息。基本上,不要惊慌,因为这只是一个警告,所以没有任何东西会真正崩溃
如果您希望修改wpml媒体插件以消除此错误,则上面链接中的开发者信息应该会有所帮助。如果您只是希望警告消失,那么我引用:
首先,如果您是一个用户,并且希望消除这些错误,那么应该在PHP中关闭错误的显示。有很多方法可以做到这一点,例如在PHP.ini、.htaccess等中。为此,您可以将其放在wp-config.PHP中。(请注意,在生产站点上隐藏错误是一种很好的做法。)
$wpdb->prepare
至少需要两个参数
试试这样:
$wpdb->prepare("
SELECT p.ID, t.language_code
FROM {$wpdb->posts} p JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id AND t.element_type = CONCAT('post_', p.post_type)
WHERE p.ID IN(%s)", join(',', $missing_langs))
$wpdb->prepare
至少需要两个参数
试试这样:
$wpdb->prepare("
SELECT p.ID, t.language_code
FROM {$wpdb->posts} p JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id AND t.element_type = CONCAT('post_', p.post_type)
WHERE p.ID IN(%s)", join(',', $missing_langs))
$wpdb->prepare
至少需要两个参数
试试这样:
$wpdb->prepare("
SELECT p.ID, t.language_code
FROM {$wpdb->posts} p JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id AND t.element_type = CONCAT('post_', p.post_type)
WHERE p.ID IN(%s)", join(',', $missing_langs))
$wpdb->prepare
至少需要两个参数
试试这样:
$wpdb->prepare("
SELECT p.ID, t.language_code
FROM {$wpdb->posts} p JOIN {$wpdb->prefix}icl_translations t ON p.ID = t.element_id AND t.element_type = CONCAT('post_', p.post_type)
WHERE p.ID IN(%s)", join(',', $missing_langs))