コード例 #1
0
ファイル: SQLBind.php プロジェクト: byjg/anydataset
 /**
  * Transform generic parameters [[PARAM]] in a parameter recognized by the provider name based on current DbParameter array.
  *
  * @param ConnectionManagement $connData
  * @param string $sql
  * @param array $params
  * @return array An array with the adjusted SQL and PARAMs
  */
 public static function parseSQL(ConnectionManagement $connData, $sql, $params = null)
 {
     if (is_null($params)) {
         return $sql;
     }
     $paramSubstName = SQLBind::getParamModel($connData);
     foreach ($params as $key => $value) {
         $arg = str_replace("_", SQLBind::keyAdj($key), $paramSubstName);
         $count = 0;
         $sql = preg_replace("/(\\[\\[{$key}\\]\\]|:" . $key . "[\\s\\W]|:{$key}\$)/", $arg . ' ', $sql, -1, $count);
         if ($count === 0) {
             unset($params[$key]);
         }
     }
     $sql = preg_replace("/\\[\\[(.*?)\\]\\]/", "null", $sql);
     return array($sql, $params);
 }