2013-06-07 2 views
0

PHP를 사용하여 실행하는 일반적인 쿼리 및 기타 작업에 대한 일련의 유틸리티 함수를 작성하려고합니다.PHP/SQL 쿼리에 대한 미래 보장 기능

이유 나는이 작업을 수행하기 위해 내 응용 프로그램을 PDO, mysqli 및 다음에 올리면 쉽게 업그레이드 할 수 있습니다.

내가 먼저이 접근법으로 뛰어 들기 전에 일부 PHP 전문가가이 접근 방식을 검토하고 생각하는 것을 말해 줄 수 있을지 궁금해합니다. 이는 향후 교정 및 업그레이드 가능성을위한 좋은 아이디어입니까? 이것이 성능에 어떤 영향을 미칩니 까? 앞으로 어떤 식 으로든 응용 프로그램을 제한 할 예정입니까?

//BASIC QUERY EXECUTION (ESCAPED) 
function qry($sql) 
{ 
    $sql = $db->real_escape_string($sql); 
    if(!$result = $db->query($sql)) 
    { 
     die('There was an error running the escaped query [' . $db->error . ']'); 
    } 

    return $result; 
} 

//PREPARE AN SQL STATEMENT 
function prep($sql) 
{ 
    $statment = $db->prepare($sql); 
    return $statement; 
} 

//BIND A PARAMETERS AND VARIABLE TYPE 
function bnd($statement,$parameter,$type) 
{ 
    $statement->bind_param($type, $parameter); 
    return $statement; 
} 

//EXECUTE PREPARED QUERY (UNESCAPED) 
function ex($statement) 
{ 
    if(!$result = $statement->execute()) 
    { 
     die('There was an error running the prepared query [' . $db->error . ']'); 
    } 
    return $result; 
} 

//FETCH ARRAY 
function ftch($result) 
{ 
    $row = $result->fetch_assoc(); 
    return $row; 
} 

//GET NUMBER OF ROWS 
function num($result) 
{ 
    $num = $result->num_rows; 
    return $num; 
} 

//FREE THE RESULT 
function fre($result) 
{ 
    $result->free(); 
} 
+0

코드 검토에 투표하지 마십시오.이 코드는 작동하지 않습니다. –

+0

나는 그것을 요구하지 않고있다. 나는 다른 사람들이 비슷한 일을하는지, 그것이 좋은 연습인지 아닌지 궁금해서 접근 방법에 대해 묻고있다. –

+0

이름을 뭔가로 단축하는 것 외에는 아무것도하지 않는다. 이상한. 점은 무엇인가? 함수 이름조차도 의미가 없습니다. 자유 변수는'free'이고, 실행 변수는'ex' 변수입니다. 방금 모호한 모든 것을 만들었습니다. –

답변

1

그냥 몇 가지 지침

  1. 하지 real_escape_string 기능 아무것도을 보호하지 않으며, 이러한 목적을 위해 사용해서는 안 무엇이든 독립적 인 기능
  2. 의 설정 클래스를 만듭니다. PDO에는 이와 같은 기능이 없습니다. 이 함수를 전체 쿼리에 적용하면 전혀 의미가 없습니다.
  3. 따라서 qry() 함수는 단순히 작동하지 않습니다.
  4. $ db가 범위를 벗어났기 때문에 작동하지 않습니다.
  5. 제발 죽지 마세요()! 대신에 예외를 던집니다. 내가 한 ex() 호출 모두를 만들기 위해 bnd()prep() 기능을 제거 것이지만 PDO does it already, 아니 코드는

나머지는 꽤 괜찮 필요하지 않습니다. 또한 별도의 함수를 만들어 스칼라, 행, 행 배열 및 리소스와 같은 별도의 결과 유형을 얻습니다. 여기에 내가 말하는 것에 대한 예가있다. 꽤 비슷한 개념을 바탕으로 한 safeMysql class

+0

고마워, 나는 PHP 전문가 인 척하지 않습니다. 나는 단지 배우고 능률적 인 일을하는 방법을 찾고 있습니다. 나는 내가 개발 한 성공적인 사업을 운영하며 미래의 교정과 사물에 대해서 생각할 필요가있다. –