首先,您不应该以这种方式将SQL查询与任何变量连接在一起-这将导致SQL注入漏洞。
而且get_results
方法只返回一个结果数组。您不能将其用作对象并获取num_rows
从中可以看出,数组中没有这样的属性(它是WPDB
对象)。
另一个问题是默认情况下get_results
将以对象格式返回选定的行,而不是以数组形式返回。
下面是固定代码:
<?php
require_once( $_SERVER[\'DOCUMENT_ROOT\'] . \'/wp-load.php\' );
global $wpdb, $ipONactivate;
$ipn_table = $wpdb->prefix ."ipn_data_tbl";
$result = $wpdb->get_results( $wpdb->prepare(
"SELECT * FROM {$ipn_table} WHERE item_name = %s AND payer_email = %s",
$product, $serial
) );
if ( ! empty( $result ) ) {
foreach($result as $row) {
if ($row->item_name == $product && $row->payer_email == $serial) {
echo true;
} else {
echo false;
}
}
}
?>
顺便说一句,您可以信任SQL。如果只选择具有给定product和serial的行,则不必遍历它们并检查它们是否等于给定值。