Browse Source

moved Connection::getPdoType() to Command.

tags/2.0.0-beta
Qiang Xue 12 years ago
parent
commit
e0cd52fb65
  1. 23
      framework/db/Command.php
  2. 17
      framework/db/Connection.php
  3. 9
      tests/unit/framework/db/ConnectionTest.php

23
framework/db/Command.php

@ -144,7 +144,7 @@ class Command extends \yii\base\Component
{ {
$this->prepare(); $this->prepare();
if ($dataType === null) { if ($dataType === null) {
$this->pdoStatement->bindParam($name, $value, $this->connection->getPdoType(gettype($value))); $this->pdoStatement->bindParam($name, $value, $this->getPdoType(gettype($value)));
} elseif ($length === null) { } elseif ($length === null) {
$this->pdoStatement->bindParam($name, $value, $dataType); $this->pdoStatement->bindParam($name, $value, $dataType);
} elseif ($driverOptions === null) { } elseif ($driverOptions === null) {
@ -171,7 +171,7 @@ class Command extends \yii\base\Component
{ {
$this->prepare(); $this->prepare();
if ($dataType === null) { if ($dataType === null) {
$this->pdoStatement->bindValue($name, $value, $this->connection->getPdoType(gettype($value))); $this->pdoStatement->bindValue($name, $value, $this->getPdoType(gettype($value)));
} else { } else {
$this->pdoStatement->bindValue($name, $value, $dataType); $this->pdoStatement->bindValue($name, $value, $dataType);
} }
@ -199,7 +199,7 @@ class Command extends \yii\base\Component
$type = $value[1]; $type = $value[1];
$value = $value[0]; $value = $value[0];
} else { } else {
$type = $this->connection->getPdoType(gettype($value)); $type = $this->getPdoType(gettype($value));
} }
$this->pdoStatement->bindValue($name, $value, $type); $this->pdoStatement->bindValue($name, $value, $type);
$this->_params[$name] = $value; $this->_params[$name] = $value;
@ -209,6 +209,23 @@ class Command extends \yii\base\Component
} }
/** /**
* Determines the PDO type for the give PHP data type.
* @param string $type The PHP type (obtained by `gettype()` call).
* @return integer the corresponding PDO type
* @see http://www.php.net/manual/en/pdo.constants.php
*/
private function getPdoType($type)
{
static $typeMap = array(
'boolean' => \PDO::PARAM_BOOL,
'integer' => \PDO::PARAM_INT,
'string' => \PDO::PARAM_STR,
'NULL' => \PDO::PARAM_NULL,
);
return isset($typeMap[$type]) ? $typeMap[$type] : \PDO::PARAM_STR;
}
/**
* Executes the SQL statement. * Executes the SQL statement.
* This method should only be used for executing non-query SQL statement, such as `INSERT`, `DELETE`, `UPDATE` SQLs. * This method should only be used for executing non-query SQL statement, such as `INSERT`, `DELETE`, `UPDATE` SQLs.
* No result set will be returned. * No result set will be returned.

17
framework/db/Connection.php

@ -550,23 +550,6 @@ class Connection extends \yii\base\ApplicationComponent
} }
/** /**
* Determines the PDO type for the give PHP data type.
* @param string $type The PHP type (obtained by `gettype()` call).
* @return integer the corresponding PDO type
* @see http://www.php.net/manual/en/pdo.constants.php
*/
public function getPdoType($type)
{
static $typeMap = array(
'boolean' => \PDO::PARAM_BOOL,
'integer' => \PDO::PARAM_INT,
'string' => \PDO::PARAM_STR,
'NULL' => \PDO::PARAM_NULL,
);
return isset($typeMap[$type]) ? $typeMap[$type] : \PDO::PARAM_STR;
}
/**
* Returns the name of the DB driver for the current [[dsn]]. * Returns the name of the DB driver for the current [[dsn]].
* @return string name of the DB driver * @return string name of the DB driver
*/ */

9
tests/unit/framework/db/ConnectionTest.php

@ -76,15 +76,6 @@ class ConnectionTest extends \yiiunit\MysqlTestCase
$this->assertEquals('(column)', $connection->quoteColumnName('(column)')); $this->assertEquals('(column)', $connection->quoteColumnName('(column)'));
} }
function testGetPdoType()
{
$connection = $this->getConnection(false);
$this->assertEquals(\PDO::PARAM_BOOL, $connection->getPdoType('boolean'));
$this->assertEquals(\PDO::PARAM_INT, $connection->getPdoType('integer'));
$this->assertEquals(\PDO::PARAM_STR, $connection->getPdoType('string'));
$this->assertEquals(\PDO::PARAM_NULL, $connection->getPdoType('NULL'));
}
function testAttribute() function testAttribute()
{ {

Loading…
Cancel
Save