如果我在一个也有COUNT的php SQL语句中使用变量,我会收到错误。如果使用文字数而不是变量,它可以正常工作。在下面的代码中,您可以看到我设置变量的位置。它被设置为“test2”,下面是第一行代码。
我做错了什么?
//$tag_text_ipb hardcoded here for testing
$tag_text_ipb="test2";
//when I replace $tag_text_ipb with the literal 'test2' in SQL below, it works fine.
$query_total_tags = "SELECT COUNT(1) FROM core_tags WHERE tag_meta_app = 'downloads' AND tag_text = $tag_text_ipb";
$dlresult_total_tags = mysql_query( $query_total_tags );
//Mysql reports an error here (see below for the error text) ONLY when I use the $tag_text_ipb variable in the SQL statement.
$tag_count= mysql_result($dlresult_total_tags,$k[COUNT(1)]);
错误是: 警告:mysql_result():提供的参数不是/ home / ipboard / admin / ...中的有效MySQL结果资源:第3884行的eval()代码
如果我在SQL语句中使用文字而不是$ tag_text_ipb,则此错误消失并且一切正常。
答案 0 :(得分:2)
您在SQL中的标记文本var周围缺少引号。应该是这样的:
$query_total_tags = "SELECT COUNT(1) FROM core_tags WHERE tag_meta_app = 'downloads' AND tag_text = '".$tag_text_ipb."'";
答案 1 :(得分:2)
$query_total_tags = "SELECT COUNT(1) ... AND tag_text = '$tag_text_ipb'";
^ ^
您需要引用文本值,否则您的查询将会格式错误。请阅读有关SQL注入的信息,看看是否可以使用绑定参数而不是原始查询。
答案 2 :(得分:0)
试试这个
$query_total_tags = "SELECT COUNT(1) FROM core_tags WHERE tag_meta_app = 'downloads' AND tag_text = '$tag_text_ipb'";
($ tag_text_ipb周围的单引号)