Mysql计数问题与sql语句中的变量 - php

时间:2011-12-10 16:33:43

标签: php mysql sql

如果我在一个也有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,则此错误消失并且一切正常。

3 个答案:

答案 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周围的单引号)