Advertisement
xenoside

php pdo mssql version charset

Aug 31st, 2016
472
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
PHP 3.21 KB | None | 0 0
  1. XenoPdoDblib.class.php
  2. <?php
  3. /* vim: set expandtab tabstop=4 shiftwidth=4: */
  4. // +--------------------------------------------------------+
  5. // | PHP version 5.x                                        |
  6. // +--------------------------------------------------------+
  7. // | Copyright : Song Hyo-Jin <shj at xenosi.de>            |
  8. // +--------------------------------------------------------+
  9. // | License : BSD                                          |
  10. // +--------------------------------------------------------+
  11. //
  12. // $Id: XenoPdoDblib.class.php, 2016. 8. 31. crucify Exp $
  13.  
  14. class XenoPdoDblib extends PDO
  15. {
  16.     public function __construct($inifile) {
  17.         $config = parse_ini_file($inifile, true);
  18.         $config = $config['pdo'];
  19.         putenv('FREETDSCONF='.$inifile);
  20.         parent::__construct("dblib:host={$config['host']};dbname={$config['db']}", $config['user'], $config['pass'], array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION));
  21.     }
  22.  
  23.     public function insert($tableName, $fields) {
  24.         foreach($fields as $k => $v) {
  25.             $fieldNames[] = $k;
  26.             $fieldValues[':'.$k] = $v;
  27.         }
  28.  
  29.         $stmt = $this->prepare("INSERT INTO $tableName (".implode(', ', $fieldNames).") VALUES (:".implode(', :', $fieldNames).")");
  30.         $stmt->execute($fieldValues);
  31.         return $stmt;
  32.     }
  33.  
  34.     public function insertAll($tableName, $fields) {
  35.         foreach($fields[0] as $k => $v) {
  36.             $fieldNames[] = $k;
  37.         }
  38.  
  39.         $stmt = $this->prepare("INSERT INTO $tableName (".implode(', ', $fieldNames).") VALUES (:".implode(', :', $fieldNames).")");
  40.         foreach($fields as $field) {
  41.             $fieldValues = array();
  42.             foreach($field as $k => $v) {
  43.                 $fieldValues[':'.$k] = $v;
  44.                 $stmt->execute($fieldValues);
  45.             }
  46.         }
  47.         return $stmt;
  48.     }
  49.  
  50.     public function update($tableName, $fields, $wheres, $whereFields) {
  51.         foreach($fields as $k => $v) {
  52.             $fieldNames[] = $k.' = :'.$k;
  53.             $fieldValues[':'.$k] = $v;
  54.         }
  55.         foreach($whereFields as $k => $v) {
  56.             $fieldValues[':'.$k] = $v;
  57.         }
  58.  
  59.         $stmt = $this->prepare("UPDATE $tableName SET ".implode(', ', $fieldNames)." WHERE $wheres");
  60.         $stmt->execute($fieldValues);
  61.         return $stmt;
  62.     }
  63.  
  64.     public function updateAll($tableName, $fields, $wheres, $whereFields) {
  65.         foreach($fields[0] as $k => $v) {
  66.             $fieldNames[] = $k.' = :'.$k;
  67.         }
  68.  
  69.         $stmt = $this->prepare("UPDATE $tableName SET ".implode(', ', $fieldNames)." WHERE $wheres");
  70.         $cnt = count($fields);
  71.         for($i = 0; $i < $cnt; $i ++) {
  72.             $fieldValues = array();
  73.             foreach($fields[$i] as $k => $v) {
  74.                 $fieldValues[':'.$k] = $v;
  75.             }
  76.             foreach($whereFields[$i] as $k => $v) {
  77.                 $fieldValues[':'.$k] = $v;
  78.             }
  79.             $stmt->execute($fieldValues);
  80.         }
  81.         return $stmt;
  82.     }
  83. }
  84.  
  85. test.php
  86. <?php
  87.  
  88. error_reporting(E_ALL);
  89.  
  90. include_once 'XenoPdoDblib.class.php';
  91.  
  92. $db = new XenoPdoDblib(__DIR__.'/mssql.conf');
  93. $db->beginTransaction();
  94.  
  95. $stmt = $db->query("SELECT * FROM qqq");
  96. print_r($stmt->fetchAll(PDO::FETCH_ASSOC));
  97.  
  98. $fields = [
  99.     'a' => 'b',
  100.     'c' => 'd'
  101. ];
  102. $stmt = $db->insert('qqq', $fields);
  103.  
  104. echo 'inserts : ', $stmt->rowCount(), "\n";
  105.  
  106. $db->rollback();
  107. #$db->commit();
  108.  
  109. exit;
  110.  
  111. mssql.conf
  112. [sqlserver]
  113. host = 1.1.1.1
  114. port = 2433
  115. tds version = 7.0
  116. client charset = UTF-8
  117. [pdo]
  118. host = sqlserver
  119. db = product_db
  120. user = sqluser
  121. pass = "sqlpw!#$"
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement