插入多条记录时,错误地调用了$wpdb->Prepare

时间:2021-05-10 作者:shanebp

这项工作:

$values = array();

foreach (  $_POST as $key => $value ) {
    $values[] = $wpdb->prepare( "(%d,%s,%s)", $post_id, $key, $value );
}

$query = "INSERT INTO {$table} (post_id, meta_key, meta_value) VALUES ";
$query .= implode( ",\\n", $values );
$wpdb->query( $wpdb->prepare( "$query", $values ) );
但它发出了这样的通知:

PHP注意:调用了wpdb::prepareincorrectly.查询中传递的参数数(3)的占位符数(0)不正确。

我怎样才能避免通知?

1 个回复
最合适的回答,由SO网友:Sally CJ 整理而成

你不需要第二个$wpdb->prepare() 就这么做吧$wpdb->query( $query );. 原因是$query 不包含通知中所述的任何占位符;仅限于中的项目$values 包含占位符,但您已经在foreach. 此外,请确保运行query() 仅当阵列$values 不为空。