我试图获取我的数据库表之一中的记录数,其中post_id字段等于与之比较的$postID变量。当我将{$postID}换为诸如130的整数时,查询将按预期返回结果。但是,每当我尝试使用$postID变量查询数据库时,都不会返回任何结果。我已经检查了$postID包含的内容,以确保将post_id与正确的值进行比较,并且它包含130的整数值。

如果查询使用硬编码的130代替$postID,为什么当我使用也等于$postID130时为什么不起作用?

$postID = get_the_ID();
$postLikes = $wpdb->get_results('
    SELECT COUNT(*) FROM wp_post_likes WHERE post_id = {$postID}
');

echo "<pre>";
     var_dump($postLikes);
echo "</pre>";

最佳答案

变量替换不会在单引号字符串中发生,请参见Variable parsing

而且我建议您使用参数化查询,而不是将有效负载数据混合到实际语句中,请参见Protect Queries Against SQL Injection Attacks

$postLikes = $wpdb->get_col($wpdb->prepare(
    'SELECT COUNT(*) FROM wp_post_likes WHERE post_id = %s',
    get_the_ID()
));

10-07 19:04
查看更多