2011-12-10 2 views
-1

또한 COUNT가있는 PHP SQL 문에서 변수를 사용하면 오류가 발생합니다. 변수 대신 리터럴 번호를 사용하면 올바르게 작동합니다. 아래 코드에서 변수를 어디에 설정했는지 확인할 수 있습니다. 아래의 첫 번째 코드 줄은 "test2"로 설정됩니다.SQL 문에 변수가있는 mysql 계산 문제 - php

내가 뭘 잘못하고 있니?

//$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() : 공급 인수가 유효한 MySQL의 결과 리소스에/홈/ipboard/관리/...되지 않습니다 : 평가() 라인 'D 코드 3884

$ tag_text_ipb 대신 SQL 문에서 리터럴을 사용하면이 오류가 사라지고 모든 것이 올바르게 작동합니다.

+0

내가 바보 나는 SQL 문을 변수에 ''를 사용했다 깜빡 해요보십시오. 변수의 내용이 숫자 일 때 나는 그렇게하지 않는 것을 잊어 버렸습니다. –

답변

2

SQL에서 태그 텍스트 var 주위에 따옴표가 없습니다. 다음과 같이해야합니다 당신은 그렇지 않으면 쿼리는 잘못된 것입니다, 텍스트 값을 인용 할 필요가

$query_total_tags = "SELECT COUNT(1) FROM core_tags WHERE tag_meta_app = 'downloads' AND tag_text = '".$tag_text_ipb."'"; 
2
$query_total_tags = "SELECT COUNT(1) ... AND tag_text = '$tag_text_ipb'"; 
                 ^   ^ 

. SQL 주입에 대해 읽고 원시 쿼리가 아닌 바인드 매개 변수를 사용할 수 있는지 확인하십시오.

0

$query_total_tags = "SELECT COUNT(1) FROM core_tags WHERE tag_meta_app = 'downloads' AND tag_text = '$tag_text_ipb'"; 

($의 tag_text_ipb 주위 단일 qoutes)