2010-01-08 2 views
0

SQL 쿼리는 변수가 쿼리에 전달 될 때 AJAX 페이지를 통해 출력을 제공하지 않습니다. 행 수를 계산해도 영 (0)이됩니다. 전달 된 변수가있는 동일한 쿼리의 echo은 값을 가진 것으로 표시됩니다.AJAX에 대한 SQL 쿼리가 작동하지 않고 직접 입력되었습니다.

브라우저 페이지에서 AJAX 페이지의 쿼리로 복사 (복사)하고 붙여 넣기 할 때 결과가 나타납니다.

$qu="SELECT DISTINCT bk.bookname,bk.author,bk.publisher,bk.edition,bk.description,lam.article_name,bk.keywords,bk.qtyinstock FROM lib_article_master lam, lib_book_cd_master bk WHERE bk.bookname='$arr[2]' AND bk.author='$arr[3]' AND bk.publisher='$arr[4]' AND bk.article_id=lam.article_id";//here $arr[2],$arr[3],$arr[4] are variables from another query for comparison in AJAX page  
$r=QrySelect($qu); 
echo " <br> ".$qu;//query is echoed in browser 
echo "<br>count : ".mysql_num_rows($r);//count of number of rows 
$arr1=mysql_fetch_array($r);  
?> 
    <table width="97%" border="0" > 
     <tr 
     <td width="11%"><div align="left"><strong>Description </strong></div></td> 
     </tr>  
    </table> 
    <textarea name="txt_Keywords" style="width:90%; height:90px"><?php echo $arr1[4]; ?></textarea> 

출력은 아무것도 (매개 변수로서 AJAX 페이지 제 SQL 코드)은 다음과 같이

코드이다.

쿼리는 브라우저에서 가져 와서 변수 값과 함께 코드를 출력 할 때 출력을 얻습니다.

$qu="SELECT DISTINCT bk.bookname,bk.author,bk.publisher,bk.edition,bk.description,lam.article_name,bk.keywords,bk.qtyinstock FROM lib_article_master lam, lib_book_cd_master bk WHERE bk.bookname='Java Complete Reference' AND bk.author='Martin D Leuthen' AND bk.publisher='ABS Publications' AND bk.article_id=lam.article_id";//here $arr[2],$arr[3],$arr[4] are replaced as per browser output 
$r=QrySelect($qu); 
echo " <br> ".$qu;//query is echoed in browser 
echo "<br>count : ".mysql_num_rows($r);//count of number of rows 
$arr1=mysql_fetch_array($r);  
?> 
    <table width="97%" border="0" > 
     <tr 
     <td width="11%"><div align="left"><strong>Description </strong></div></td> 
     </tr>  
    </table> 
    <textarea name="txt_Keywords" style="width:90%; height:90px"><?php echo $arr1[4]; ?></textarea> 

데이터베이스에서 올바른 행 수를 사용하여 위 코드의 결과를 얻고 있습니다.

도움이 될 것입니다. 당신은 그래서 당신의 쿼리가 같아야합니다

"SELECT * FROM table WHERE param = '" . $value . "'" 

처럼, 당신의 쿼리를 작성하기 위해 문자열 연결을 사용해야합니다

+0

실험 중에 실마리를 얻었습니다 ... * 여러 WHERE 조건과 관련이 있습니다. – dev646

답변

0

마지막으로 ... PHIL ... 그냥 'TRIM()'을 포함하고 비교 문제가 해결되었습니다. 브라우저에서 코드를 붙여 넣었을 때 어떻게 작동했는지는 아직 모릅니다. . 아래의 코드를 제공 ...

$fr0=trim($arr[0], "");//'TRIMS' ALL UNWANTED SPACES FOR COMPARISON TO BE PERFECT 
$fr1=trim($arr[1], ""); 
$fr2=trim($arr[2], ""); 
$fr3=trim($arr[3], ""); 
$bkr0=strtolower($fr0);//HERE EVERY SINGLE CHARCTER IS TURNED TO 'LOWER CASE' TO REMOVE ALL POSSIBLE WAYS OF ERRORS IN COMPARISON 
$bkr1=strtolower($fr1); 
$bkr2=strtolower($fr2); 
$bkr3=strtolower($fr3); 
//NOW COMPARISON FOR EACH VALUE IS DONE IN A WHILE LOOP BY 'mysql_fetch_row' 

그것이 정말 많은 의미 ... 당신의 노력에 대한 U 모두 감사합니다!

2

: mysql_real_escape_string를 가진 문자열 변수를 탈출하는 것을 잊지 마세요,

$qu="SELECT DISTINCT bk.bookname,bk.author,bk.publisher,bk.edition,bk.description,lam.article_name,bk.keywords,bk.qtyinstock FROM lib_article_master lam, lib_book_cd_master bk WHERE bk.bookname='".$arr[2]."' AND bk.author='".$arr[3]."' AND bk.publisher='".$arr[4]."' AND bk.article_id=lam.article_id"; 

또한 ().

+0

싫어 ... 출력을 제공하지 않습니다. 이전과 동일하게 설정하십시오. 시도해 주셔서 고맙습니다. – dev646

+0

잘 됐네요, 오타가 있었습니까? – Hogan

+0

실제로 모든 방법을 시도했습니다. 지금은 버그가 없습니다. 어쨌든 다른 방식으로 코드를 작성하여 변경 사항을 확인하려고합니다. 고맙습니다. 어쨌든 실험하는 동안 단서를 얻었습니다 ... '그것은 여러 WHERE 조건과 관련이 있습니다.' 검색하려고하는 데이터는 '메모'유형입니다. :) – dev646

관련 문제