Advertisement
Guest User

Untitled

a guest
Nov 22nd, 2016
149
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 2.78 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. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement