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

Вы ничего не делаете, кроме сокращения имен во что-то. странно. В чем смысл? Даже имена функций не имеют смысла. 'Fre' против' free', 'ex' вместо' execute'. Вы просто сделали все неоднозначным. –

ответ

1

Просто несколько рекомендаций

  1. Создать класс, а не набор независимых функций
  2. Независимо от функции real_escape_string не защищает ничего и не должны использоваться для этой цели. PDO вообще не имеет такой функции. Применение этой функции к целому запросу не имеет абсолютно никакого смысла.
  3. Таким образом, qry() функция просто не работает.
  4. Это не сработает, потому что $ db выходит за рамки.
  5. Пожалуйста, не умирайте()! Вместо этого выберите исключение. PDO does it already, код не требуется

Остальное довольно хорошо, хотя я бы избавиться от bnd() и prep() функций, чтобы сделать все это в одном ex() вызова. А также я хотел бы сделать отдельные функции для получения отдельных типов результатов, таких как скаляр, строка, массив строк и ресурса. Вот пример того, о чем я говорю: a safeMysql class на основе довольно похожей концепции

+0

Спасибо, я не претендую на роль эксперта по php. Я просто изучаю и пытаюсь найти эффективные способы делать вещи. Я запускаю успешные предприятия, которые я разработал, и мне нужно подумать о будущих проверках и вещах. –

Смежные вопросы