为什么我的SQL查询不返回任何记录?

时间:2016-02-19 19:57:09

标签: php mysql database

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

如果查询使用硬编码的130代替$postID,那么当我使用等同于$postID的{​​{1}}时,为什么它不起作用?

130

1 个答案:

答案 0 :(得分:4)

变量替换不会在单引号字符串中发生,请参阅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()
));