Comments (4)
You can declare your own PDO object with the correct charset and then pass it into sparrow.
See http://stackoverflow.com/questions/4361459/php-pdo-charset-set-names
from sparrow.
Thanks for your reply.
Yes I understand this.
However I am trying to allow my application to work with different database engine.
So I initizialize the database in this way:
public function __construct($config)
{
$this->db = new Sparrow();
$this->db->setDb($config);
}
where $config is:
[
'type' => 'mysqli', // mysqli | mysql | pgsql | sqlite | sqlite3 | pdomysql | pdopgsql | pdosqlite
'hostname' => 'localhost',
'username' => 'root',
'password' => '',
'database' => 'mydatabase'
'charset' => 'utf8'
]
So is only enough to change config in order to change database engine.
from sparrow.
For example this is for mysqli, mysql and pdo:
switch ($db['type']) {
case 'mysqli':
$this->db = new mysqli(
$db['hostname'],
$db['username'],
$db['password'],
$db['database']
);
if ($this->db->connect_error) {
throw new Exception('Connection error: '.$this->db->connect_error);
}
/* Change character set */
if (! $this->db->set_charset($db['charset'])) {
throw new Exception("Error loading character set utf8: %s\n", $this->db->error);
}
break;
case 'mysql':
$this->db = mysql_connect(
$db['hostname'],
$db['username'],
$db['password']
);
if (!$this->db) {
throw new Exception('Connection error: '.mysql_error());
}
/* Change character set */
mysql_set_charset($db['charset'], $this->db);
mysql_select_db($db['database'], $this->db);
break;
case 'pdomysql':
$dsn = sprintf(
'mysql:host=%s;port=%d;dbname=%s;charset=%s', /* Change character set */
$db['hostname'],
isset($db['port']) ? $db['port'] : 3306,
$db['database'],
$db['charset'] /* Change character set */
);
$this->db = new PDO($dsn, $db['username'], $db['password']);
$db['type'] = 'pdo';
break;
}
from sparrow.
For pgsql, I think that is http://php.net/manual/en/function.pg-set-client-encoding.php
but I am not sure.
Not sure also for sqlite and sqlite3.
And in last, for pdomysql and pdosqlite, I think that only way is to run query:
$this->db->('SET NAMES UTF8');
I guess why not add this on sparrow?
thanks
from sparrow.
Related Issues (20)
- PDO Connection from within Flight HOT 1
- Selecting data from multiple tables HOT 1
- Get and set charset from connection string
- Making Sparrow and Package on Packagist HOT 2
- Null in where() HOT 2
- mysql_* functions are depreciated and will be removed in future. HOT 2
- Add better error handling support. HOT 1
- Model class relationship HOT 1
- MySQL Function NOW() HOT 4
- PDO prepare statment HOT 1
- Join fix name conflict HOT 4
- Fix charset HOT 3
- Missing operator != HOT 1
- Question about join HOT 6
- Add parenthesis HOT 2
- Support for REDIS HOT 3
- Expire not used in execute HOT 1
- On duplicate key support? HOT 1
- Execute no have close function
- Group by isn't working
Recommend Projects
-
React
A declarative, efficient, and flexible JavaScript library for building user interfaces.
-
Vue.js
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
-
Typescript
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
-
TensorFlow
An Open Source Machine Learning Framework for Everyone
-
Django
The Web framework for perfectionists with deadlines.
-
Laravel
A PHP framework for web artisans
-
D3
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
-
Recommend Topics
-
javascript
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
-
web
Some thing interesting about web. New door for the world.
-
server
A server is a program made to process requests and deliver data to clients.
-
Machine learning
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
-
Visualization
Some thing interesting about visualization, use data art
-
Game
Some thing interesting about game, make everyone happy.
Recommend Org
-
Facebook
We are working to build community through open source technology. NB: members must have two-factor auth.
-
Microsoft
Open source projects and samples from Microsoft.
-
Google
Google ❤️ Open Source for everyone.
-
Alibaba
Alibaba Open Source for everyone
-
D3
Data-Driven Documents codes.
-
Tencent
China tencent open source team.
from sparrow.