在使用global $wpdb时,对数据进行查询,举个栗子
<?php global $wpdb; $cidentityNo=$_POST['identityNo']; $IsHave = $wpdb -> get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->postmeta where meta_key='key_price' and meta_value='100'")); echo $IsHave; ?>
上面的代码输出后就会报Warning: Missing argument 2 for wpdb::prepare()的错误。
使用$wpdb->prepare是因为mysql语句中可能含有单引号双引号这样的字符,如果不加 处理直接送给mysql,可能会导致错误。于是这里通过一个prepare来对mysql语句进行预处理。prepare的语法是:
$sql = $wpdb->prepare( 'query' [, value_parameter, value_parameter ... ] );
在query中可以包含%d,%S,%f,分别表示后面参数的类型是整数,字符和浮点。所以我们将代码改成这样:
$IsHave = $wpdb -> get_var($wpdb->prepare("SELECT count(*) FROM $wpdb->postmeta where meta_key=%s and meta_value=%d",'key_price','100'));
以上问题解决。
参考资料:
https://stackoverflow.com/questions/13955416/warning-missing-argument-2-for-wpdbprepare
https://blog.csdn.net/jinyeweiyang/article/details/42123481