Guest User

Untitled

a guest
Apr 17th, 2017
74
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 2.77 KB | None | 0 0
  1. <?php
  2.  
  3.  
  4. /**
  5. *
  6. * @param string $connection_id
  7. *
  8. * @return PDO
  9. */
  10. function connection($connection_id) {
  11. $host = $_SERVER['SABENTIS_DB_HOST'];
  12. $database = $_SERVER['SABENTIS_DB_DATABASE'];
  13. $username = $_SERVER['SABENTIS_DB_LOGIN'];
  14. $password = $_SERVER['SABENTIS_DB_PASSWORD'];
  15.  
  16. static $connections = [];
  17. if (!isset($connections[$connection_id])) {
  18. $pdo_options = [];
  19. $pdo_options[PDO::ATTR_ERRMODE] = PDO::ERRMODE_EXCEPTION;
  20. $pdo_options[PDO::SQLSRV_ATTR_ENCODING] = PDO::SQLSRV_ENCODING_UTF8;
  21. $cnn = new \PDO("sqlsrv:server=$host;Database=$database", $username, $password, $pdo_options);
  22. $cnn->setAttribute(PDO::SQLSRV_ATTR_ENCODING, PDO::SQLSRV_ENCODING_UTF8);
  23. $connections[$connection_id] = $cnn;
  24.  
  25. }
  26. return $connections[$connection_id];
  27. }
  28.  
  29. /**
  30. * Summary of prepare
  31. *
  32. * @param mixed $connection
  33. * @param mixed $query
  34. * @return PDOStatement
  35. */
  36. function prepare($connection, $query, $buffered, $emulate_prepares) {
  37. $pdo_options = array();
  38. if ($emulate_prepares) {
  39. $pdo_options[PDO::ATTR_EMULATE_PREPARES] = TRUE;
  40. }
  41. $pdo_options[PDO::SQLSRV_ATTR_DIRECT_QUERY] = TRUE;
  42. $pdo_options[PDO::SQLSRV_ATTR_ENCODING] = PDO::SQLSRV_ENCODING_UTF8;
  43. if ($buffered) {
  44. $pdo_options[PDO::ATTR_CURSOR] = PDO::CURSOR_SCROLL;
  45. $pdo_options[PDO::SQLSRV_ATTR_CURSOR_SCROLL_TYPE] = PDO::SQLSRV_CURSOR_BUFFERED;
  46. }
  47. return $connection->prepare($query, $pdo_options);
  48. }
  49.  
  50. /**
  51. * Summary of execute
  52. *
  53. * @param PDO $connection
  54. * @param string $query
  55. *
  56. * @param PDOStatement;
  57. */
  58. function execute($connection,
  59. $query,
  60. array $args = [],
  61. $buffered = TRUE,
  62. $emulate_prepares = TRUE) {
  63. $st = prepare($connection, $query, $buffered, $emulate_prepares);
  64. $st->execute($args);
  65. return $st;
  66. }
  67.  
  68.  
  69. //*******************************************************
  70. // TEST BEGIN
  71. //*******************************************************
  72.  
  73. $connection = connection('default');
  74.  
  75. // Drop
  76. try {
  77. execute($connection, 'DROP TABLE TEST');
  78. }
  79. catch(\Exception $e) {}
  80.  
  81.  
  82. // Recreate
  83. execute($connection, "CREATE TABLE TEST([id] [int] IDENTITY(1,1) NOT NULL, [name] nvarchar(max))");
  84.  
  85.  
  86. $prefix = '가각';
  87. $name = '가각ácasa';
  88. $name2 = '가각sample2';
  89.  
  90. execute($connection, "INSERT INTO TEST(name) VALUES(:p0)", ['p0' => $name], TRUE, FALSE);
  91. execute($connection, "INSERT INTO TEST(name) VALUES(:p0)", ['p0' => $name2], TRUE, TRUE);
  92.  
  93. $statement = execute($connection, "SELECT * FROM TEST WHERE NAME LIKE :p0", ['p0' => "$prefix%"]);
  94. foreach ($statement as $row) {
  95. print '<br/>' . 'FOUND: ' . $row['name'];
  96. }
  97.  
  98. $statement = execute($connection, "SELECT * FROM TEST WHERE NAME LIKE :p0", ['p0' => "$prefix%"], FALSE, FALSE);
  99. foreach ($statement as $row) {
  100. print '<br/>' . 'FOUND: ' . $row['name'];
  101. }
Add Comment
Please, Sign In to add comment