2013-07-17 3 views
-4

저는 현재 PDO에서 포럼 시스템을 얻는 중입니다. 나는 색인을 만들었고 나는 지금 범주와 관련있다. 그러나 이상한 길에서 나는 범주를받지 못한다. 내가 category.php에있을 때, id = 1이면 범주가 존재하지 않는다고 말합니다. 다음 코드는 카테고리 ID를 수신하는 부분입니다.카테고리 ID가 수신되지 않습니다.

<?php 
    $sql = $db->query("SELECT 
       cat_id, 
       cat_name, 
       cat_description 
      FROM 
       categories 
      WHERE 
       cat_id = " . $_GET['id']); 

$result = $sql->rowCount(); 

if(!$result) 
{ 
    echo 'The category could not be displayed, please try again later.'; 
} 
else 
{ 
    if($sql || ($result== 0)) 
    { 
     echo 'This category does not exist.'; 
    }?> 

이 범주는 존재하지 않는 라인을 보여줍니다. 나는 테이블이 옳은지 무엇이 잘못되었는지 전혀 모른다. 이게 그 표야. http://sqlfiddle.com/#!2/8d1c4.

저는 PDO 초보자입니다. 어쩌면 생각이 간단하기 때문에 단순한 오류 일 수 있습니다.

답변이 무엇인지 알고 싶은 사람들에게. 여기에 내가 지금 사용하고있는 스크립트 :

<?php 
//first select the category based on $_GET['cat_id'] 
$sql = $db->prepare('SELECT cat_id, cat_name, cat_description 
    FROM categories WHERE cat_id = :catid'); 
$sql->bindParam(':catid', $_GET['id'], PDO::PARAM_INT); 
$sql->execute(); 
$result = $sql->rowCount(); 


if($result === FALSE){ 
    echo 'The category could not be displayed, please try again later.'; 
} 
elseif(count($result) === 0){ 
    echo 'This category does not exist.'; 
} 
else{ 
+0

왜 '$ sql || ($ result == 0)'? 쿼리가 작동하면''이 카테고리는 존재하지 않습니다. ''라는 문구가 출력 될 것입니다! –

+0

@RocketHazmat 결과 == 0 (해당 ID가있는 범주가 없음)이므로 존재하지 않습니다. – jacmob

+0

하지만 존재한다면 어떻게되는지보십시오! 카테고리가 종료되면'$ result'는'0'과 같지 않으며'$ sql'은'FALSE'가되지 않습니다. 그러므로'if ($ sql || ($ result == 0))'를 얻을 것이다. 'if (TRUE || FALSE) '가 될 것입니다. 'TRUE'이므로 '이 카테고리는 존재하지 않습니다.'라는 문구가 인쇄됩니다. * 그것이 존재하더라도. 논리를 확인해야합니다. –

답변

-1

우선에 설명 된대로 PDO를 사용하고 있기 때문에 또한, 적절한 오류보고를 설정해야합니다, 당신은 준비 쿼리를 사용한다. 정말 쉽습니다.

$sql = $db->prepare('SELECT cat_id, cat_name, cat_description 
    FROM categories WHERE cat_id = :catid'); 
$sql->execute(array(':catid' => $_GET['id'])); 

이렇게하면 이스케이프가 처리되어 SQL 주입을 안전하게 지켜줍니다. 다음 방금 실행 한 SQL 쿼리에서 데이터를 가져와야합니다.

$result = $sql->fetchAll(PDO::FETCH_ASSOC); 

마지막으로 범주가 있는지 여부를 확인할 수 있습니다.

if($result === FALSE){ 
    echo 'The category could not be displayed, please try again later.'; 
} 
elseif(count($result) === 0){ 
    echo 'This category does not exist.'; 
} 
else{ 
    echo 'Category found'; 
} 
+0

고마워요! 지금 일하고있어. – jacmob

+0

당신을 진심으로 환영합니다! :-디 –

0

행 수를 사용할 때의 요점은 무엇입니까?
카테고리가 필요하면 을 가져 오지 않는 이유는 무엇입니까?

<?php 
$sql = "SELECT cat_id, cat_name, cat_description FROM categories WHERE cat_id = ?"; 
$stm = $db->prepare($sql); 
$stm->execute(array($_GET['id'])); 
$row = $stm->fetch(); 
if (!$row) { 
    // no category found 
} 

참고는 위 그림과 같이 준비된 문을 사용할 필요가있다.
당신은 tag wiki

+0

아직 카테고리가 존재하지 않습니다. – jacmob

+0

글쎄 존재하지 않거나 오류가 있습니다. –

관련 문제