Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on Aug 12th, 2012  |  syntax: None  |  size: 1.23 KB  |  hits: 7  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. PHP: using prepared statements and protecting against SQL injection vs escape
  2. select {$fields} from {$table} where Age='{$age}' order by {$orderby_pref}
  3.        
  4. $fields       = mysql_escape($fields);
  5. $table        = mysql_escape($table);
  6. $age          = mysql_escape($age);
  7. $orderby_pref = mysql_escape($orderby_pref);
  8.  
  9. select {$fields} from {$table} where Age='{$age}' order by {$orderby_pref}
  10.        
  11. #   Order
  12.     switch(strtoupper($Order)){
  13.         default:
  14.         case 'ASC':
  15.             $Order = 'ASC';
  16.             break;
  17.  
  18.         case 'DESC':
  19.             $Order = 'DESC';
  20.             break;
  21.     }
  22.  
  23.     #   ID
  24.     $ID = 39;
  25.     $Username = 'David';
  26.  
  27.     #   Query
  28.     $Query = $this->DB->Main->prepare('SELECT * FROM Table WHERE ID = :ID AND Username = :Username ORDER BY HellBob '.$Order);
  29.     $Query->bindValue(':ID', $ID, PDO::PARAM_INT);
  30.     $Query->bindValue(':Username', $Username, PDO::PARAM_STR);
  31.  
  32.     #   All good ?
  33.     if(!$Query->execute()){
  34.         exit('Error');
  35.     }
  36.  
  37.     // Results
  38.     $Row = $Query->fetch(PDO::FETCH_ASSOC);
  39.        
  40. $fields = explode(',', $user_supplied_fields);
  41. foreach ($fields as $field) {
  42.     $field = trim($field);
  43.     if (preg_match('/[^a-zA-Z0-9._]/', $field)) {
  44.         // invalid field name
  45.         return false;
  46.     }
  47. }