File: SqlDumper.php Lines 7 to 33 |
| 7 | */ |
| 8 | class SqlDumper |
| 9 | { |
| 10 | /** |
| 11 | * 実行するPrepared Statementを non-prepared なSQLにして返す |
| 12 | * @param string $psql (non) prepared statement sql |
| 13 | * @param array $params placeholders |
| 14 | * @return string binded sql |
| 15 | */ |
| | public static function dump($psql, $params) |
| 17 | { |
| 18 | $keys = []; |
| 19 | $values = []; |
| 20 | |
| 21 | $isNamedPlaceholders = false; |
| 22 | if (is_array($params) && !empty($params) && is_string(key($params))) { |
| | uksort($params, function ($k1, $k2) { |
| 24 | return strlen($k2) - strlen($k1); |
| 25 | }); |
| 26 | $isNamedPlaceholders = true; |
| 27 | } |
| 28 | |
| 29 | foreach ($params as $key => $value) { |
| 30 | if (is_string($key)) { |
| 31 | $keys[] = '/:' . ltrim($key, ':') . '/'; |
| 32 | } else { |
| 33 | $keys[] = '/[?]/'; |
|
File: SqlDumper.php Lines 40 to 52 |
| 40 | } elseif (is_float($value)) { |
| 41 | $values[] = strval($value); |
| 42 | } elseif (is_null($value)) { |
| 43 | $values[] = 'null'; |
| 44 | } |
| 45 | } |
| 46 | if ($isNamedPlaceholders) { |
| 47 | return preg_replace($keys, $values, $psql); |
| 48 | } else { |
| | return preg_replace($keys, $values, $psql, 1, $count); |
| 50 | } |
| 51 | } |
| 52 | } |
|