mirror of
https://github.com/dg/dibi.git
synced 2025-08-04 05:07:36 +02:00
removed PHP < 7.1 support
This commit is contained in:
@@ -1,9 +1,5 @@
|
|||||||
language: php
|
language: php
|
||||||
php:
|
php:
|
||||||
- 5.4
|
|
||||||
- 5.5
|
|
||||||
- 5.6
|
|
||||||
- 7.0
|
|
||||||
- 7.1
|
- 7.1
|
||||||
|
|
||||||
script:
|
script:
|
||||||
@@ -18,7 +14,7 @@ before_script:
|
|||||||
# Install Nette Tester & Code Checker
|
# Install Nette Tester & Code Checker
|
||||||
- travis_retry composer install --no-interaction
|
- travis_retry composer install --no-interaction
|
||||||
- travis_retry composer create-project nette/code-checker temp/code-checker ~2.5 --no-interaction
|
- travis_retry composer create-project nette/code-checker temp/code-checker ~2.5 --no-interaction
|
||||||
- if [ $TRAVIS_PHP_VERSION == "7.0" ]; then COVERAGE="-p phpdbg --coverage ./coverage.xml --coverage-src ./src"; fi
|
- if [ $TRAVIS_PHP_VERSION == "7.1" ]; then COVERAGE="-p phpdbg --coverage ./coverage.xml --coverage-src ./src"; fi
|
||||||
|
|
||||||
# Create databases.ini
|
# Create databases.ini
|
||||||
- cp ./tests/databases.travis.ini ./tests/databases.ini
|
- cp ./tests/databases.travis.ini ./tests/databases.ini
|
||||||
|
33
appveyor.yml
33
appveyor.yml
@@ -1,6 +1,5 @@
|
|||||||
build: off
|
build: off
|
||||||
cache:
|
cache:
|
||||||
- c:\php5 -> appveyor.yml
|
|
||||||
- c:\php7 -> appveyor.yml
|
- c:\php7 -> appveyor.yml
|
||||||
- '%LOCALAPPDATA%\Composer\files -> appveyor.yml'
|
- '%LOCALAPPDATA%\Composer\files -> appveyor.yml'
|
||||||
|
|
||||||
@@ -12,34 +11,21 @@ services:
|
|||||||
- mysql
|
- mysql
|
||||||
|
|
||||||
init:
|
init:
|
||||||
- SET PATH=c:\php5;%PATH%
|
- SET PATH=c:\php7;%PATH%
|
||||||
- SET ANSICON=121x90 (121x90)
|
- SET ANSICON=121x90 (121x90)
|
||||||
|
|
||||||
install:
|
install:
|
||||||
# Install PHP 5
|
# Install PHP 7.1
|
||||||
- IF EXIST c:\php5 (SET PHP=0) ELSE (SET PHP=1)
|
- IF EXIST c:\php7 (SET PHP=0) ELSE (SET PHP=1)
|
||||||
- IF %PHP%==1 mkdir c:\php5
|
- IF %PHP%==1 mkdir c:\php7
|
||||||
- IF %PHP%==1 cd c:\php5
|
- IF %PHP%==1 cd c:\php7
|
||||||
- IF %PHP%==1 appveyor DownloadFile http://windows.php.net/downloads/releases/archives/php-5.6.14-Win32-VC11-x86.zip
|
- IF %PHP%==1 appveyor DownloadFile http://windows.php.net/downloads/releases/archives/php-7.1.5-Win32-VC14-x86.zip
|
||||||
- IF %PHP%==1 7z x php-5.6.14-Win32-VC11-x86.zip >nul
|
- IF %PHP%==1 7z x php-7.1.5-Win32-VC14-x86.zip >nul
|
||||||
- IF %PHP%==1 echo extension_dir=ext >> php.ini
|
- IF %PHP%==1 echo extension_dir=ext >> php.ini
|
||||||
- IF %PHP%==1 echo extension=php_openssl.dll >> php.ini
|
- IF %PHP%==1 echo extension=php_openssl.dll >> php.ini
|
||||||
- IF %PHP%==1 appveyor DownloadFile https://files.nette.org/misc/php-sqlsrv.zip
|
- IF %PHP%==1 appveyor DownloadFile https://files.nette.org/misc/php-sqlsrv.zip
|
||||||
- IF %PHP%==1 7z x php-sqlsrv.zip >nul
|
- IF %PHP%==1 7z x php-sqlsrv.zip >nul
|
||||||
- IF %PHP%==1 copy SQLSRV\php_sqlsrv_56_ts.dll ext\php_sqlsrv_ts.dll
|
- IF %PHP%==1 copy SQLSRV\php_sqlsrv_71_ts.dll ext\php_sqlsrv_71_ts.dll
|
||||||
- IF %PHP%==1 copy SQLSRV\php_pdo_sqlsrv_56_ts.dll ext\php_pdo_sqlsrv_ts.dll
|
|
||||||
- IF %PHP%==1 del /Q *.zip
|
|
||||||
|
|
||||||
# Install PHP 7
|
|
||||||
- IF EXIST c:\php7 (SET PHP=0) ELSE (SET PHP=1)
|
|
||||||
- IF %PHP%==1 mkdir c:\php7
|
|
||||||
- IF %PHP%==1 cd c:\php7
|
|
||||||
- IF %PHP%==1 appveyor DownloadFile http://windows.php.net/downloads/releases/archives/php-7.0.3-Win32-VC14-x86.zip
|
|
||||||
- IF %PHP%==1 7z x php-7.0.3-Win32-VC14-x86.zip >nul
|
|
||||||
- IF %PHP%==1 echo extension_dir=ext >> php.ini
|
|
||||||
- IF %PHP%==1 appveyor DownloadFile https://files.nette.org/misc/php-sqlsrv.zip
|
|
||||||
- IF %PHP%==1 7z x php-sqlsrv.zip >nul
|
|
||||||
- IF %PHP%==1 copy SQLSRV\php_sqlsrv_7_ts.dll ext\php_sqlsrv_ts.dll
|
|
||||||
- IF %PHP%==1 del /Q *.zip
|
- IF %PHP%==1 del /Q *.zip
|
||||||
|
|
||||||
# Install Nette Tester
|
# Install Nette Tester
|
||||||
@@ -51,8 +37,7 @@ install:
|
|||||||
- copy tests\databases.appveyor.ini tests\databases.ini
|
- copy tests\databases.appveyor.ini tests\databases.ini
|
||||||
|
|
||||||
test_script:
|
test_script:
|
||||||
- vendor\bin\tester tests -s -p c:\php5\php -c tests\php5-win.ini
|
- vendor\bin\tester tests -s -p c:\php7\php -c tests\php-win.ini
|
||||||
- vendor\bin\tester tests -s -p c:\php7\php -c tests\php7-win.ini
|
|
||||||
|
|
||||||
on_failure:
|
on_failure:
|
||||||
# Print *.actual content
|
# Print *.actual content
|
||||||
|
@@ -1,495 +0,0 @@
|
|||||||
<?php
|
|
||||||
|
|
||||||
/**
|
|
||||||
* This file is part of the "dibi" - smart database abstraction layer.
|
|
||||||
* Copyright (c) 2005 David Grudl (https://davidgrudl.com)
|
|
||||||
*/
|
|
||||||
|
|
||||||
namespace Dibi\Drivers;
|
|
||||||
|
|
||||||
use Dibi;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* The dibi driver for MySQL database.
|
|
||||||
*
|
|
||||||
* Driver options:
|
|
||||||
* - host => the MySQL server host name
|
|
||||||
* - port (int) => the port number to attempt to connect to the MySQL server
|
|
||||||
* - socket => the socket or named pipe
|
|
||||||
* - username (or user)
|
|
||||||
* - password (or pass)
|
|
||||||
* - database => the database name to select
|
|
||||||
* - flags (int) => driver specific constants (MYSQL_CLIENT_*)
|
|
||||||
* - charset => character encoding to set (default is utf8)
|
|
||||||
* - persistent (bool) => try to find a persistent link?
|
|
||||||
* - unbuffered (bool) => sends query without fetching and buffering the result rows automatically?
|
|
||||||
* - sqlmode => see http://dev.mysql.com/doc/refman/5.0/en/server-sql-mode.html
|
|
||||||
* - resource (resource) => existing connection resource
|
|
||||||
* - lazy, profiler, result, substitutes, ... => see Dibi\Connection options
|
|
||||||
*/
|
|
||||||
class MySqlDriver implements Dibi\Driver, Dibi\ResultDriver
|
|
||||||
{
|
|
||||||
use Dibi\Strict;
|
|
||||||
|
|
||||||
const ERROR_ACCESS_DENIED = 1045;
|
|
||||||
const ERROR_DUPLICATE_ENTRY = 1062;
|
|
||||||
const ERROR_DATA_TRUNCATED = 1265;
|
|
||||||
|
|
||||||
/** @var resource|NULL */
|
|
||||||
private $connection;
|
|
||||||
|
|
||||||
/** @var resource|NULL */
|
|
||||||
private $resultSet;
|
|
||||||
|
|
||||||
/** @var bool */
|
|
||||||
private $autoFree = TRUE;
|
|
||||||
|
|
||||||
/** @var bool Is buffered (seekable and countable)? */
|
|
||||||
private $buffered;
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @throws Dibi\NotSupportedException
|
|
||||||
*/
|
|
||||||
public function __construct()
|
|
||||||
{
|
|
||||||
if (!extension_loaded('mysql')) {
|
|
||||||
throw new Dibi\NotSupportedException("PHP extension 'mysql' is not loaded.");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Connects to a database.
|
|
||||||
* @return void
|
|
||||||
* @throws Dibi\Exception
|
|
||||||
*/
|
|
||||||
public function connect(array &$config)
|
|
||||||
{
|
|
||||||
if (isset($config['resource'])) {
|
|
||||||
$this->connection = $config['resource'];
|
|
||||||
|
|
||||||
} else {
|
|
||||||
// default values
|
|
||||||
Dibi\Helpers::alias($config, 'flags', 'options');
|
|
||||||
$config += [
|
|
||||||
'charset' => 'utf8',
|
|
||||||
'timezone' => date('P'),
|
|
||||||
'username' => ini_get('mysql.default_user'),
|
|
||||||
'password' => ini_get('mysql.default_password'),
|
|
||||||
];
|
|
||||||
if (!isset($config['host'])) {
|
|
||||||
$host = ini_get('mysql.default_host');
|
|
||||||
if ($host) {
|
|
||||||
$config['host'] = $host;
|
|
||||||
$config['port'] = ini_get('mysql.default_port');
|
|
||||||
} else {
|
|
||||||
if (!isset($config['socket'])) {
|
|
||||||
$config['socket'] = ini_get('mysql.default_socket');
|
|
||||||
}
|
|
||||||
$config['host'] = NULL;
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($config['socket'])) {
|
|
||||||
$host = $config['host'] . (empty($config['port']) ? '' : ':' . $config['port']);
|
|
||||||
} else {
|
|
||||||
$host = ':' . $config['socket'];
|
|
||||||
}
|
|
||||||
|
|
||||||
if (empty($config['persistent'])) {
|
|
||||||
$this->connection = @mysql_connect($host, $config['username'], $config['password'], TRUE, $config['flags']); // intentionally @
|
|
||||||
} else {
|
|
||||||
$this->connection = @mysql_pconnect($host, $config['username'], $config['password'], $config['flags']); // intentionally @
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (!is_resource($this->connection)) {
|
|
||||||
throw new Dibi\DriverException(mysql_error(), mysql_errno());
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($config['charset'])) {
|
|
||||||
if (!@mysql_set_charset($config['charset'], $this->connection)) { // intentionally @
|
|
||||||
$this->query("SET NAMES '$config[charset]'");
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($config['database'])) {
|
|
||||||
if (!@mysql_select_db($config['database'], $this->connection)) { // intentionally @
|
|
||||||
throw new Dibi\DriverException(mysql_error($this->connection), mysql_errno($this->connection));
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($config['sqlmode'])) {
|
|
||||||
$this->query("SET sql_mode='$config[sqlmode]'");
|
|
||||||
}
|
|
||||||
|
|
||||||
if (isset($config['timezone'])) {
|
|
||||||
$this->query("SET time_zone='$config[timezone]'");
|
|
||||||
}
|
|
||||||
|
|
||||||
$this->buffered = empty($config['unbuffered']);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Disconnects from a database.
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function disconnect()
|
|
||||||
{
|
|
||||||
@mysql_close($this->connection); // @ - connection can be already disconnected
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Executes the SQL query.
|
|
||||||
* @param string SQL statement.
|
|
||||||
* @return Dibi\ResultDriver|NULL
|
|
||||||
* @throws Dibi\DriverException
|
|
||||||
*/
|
|
||||||
public function query($sql)
|
|
||||||
{
|
|
||||||
if ($this->buffered) {
|
|
||||||
$res = @mysql_query($sql, $this->connection); // intentionally @
|
|
||||||
} else {
|
|
||||||
$res = @mysql_unbuffered_query($sql, $this->connection); // intentionally @
|
|
||||||
}
|
|
||||||
|
|
||||||
if ($code = mysql_errno($this->connection)) {
|
|
||||||
throw MySqliDriver::createException(mysql_error($this->connection), $code, $sql);
|
|
||||||
|
|
||||||
} elseif (is_resource($res)) {
|
|
||||||
return $this->createResultDriver($res);
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves information about the most recently executed query.
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function getInfo()
|
|
||||||
{
|
|
||||||
$res = [];
|
|
||||||
preg_match_all('#(.+?): +(\d+) *#', mysql_info($this->connection), $matches, PREG_SET_ORDER);
|
|
||||||
if (preg_last_error()) {
|
|
||||||
throw new Dibi\PcreException;
|
|
||||||
}
|
|
||||||
|
|
||||||
foreach ($matches as $m) {
|
|
||||||
$res[$m[1]] = (int) $m[2];
|
|
||||||
}
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Gets the number of affected rows by the last INSERT, UPDATE or DELETE query.
|
|
||||||
* @return int|FALSE number of rows or FALSE on error
|
|
||||||
*/
|
|
||||||
public function getAffectedRows()
|
|
||||||
{
|
|
||||||
return mysql_affected_rows($this->connection);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Retrieves the ID generated for an AUTO_INCREMENT column by the previous INSERT query.
|
|
||||||
* @return int|FALSE int on success or FALSE on failure
|
|
||||||
*/
|
|
||||||
public function getInsertId($sequence)
|
|
||||||
{
|
|
||||||
return mysql_insert_id($this->connection);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Begins a transaction (if supported).
|
|
||||||
* @param string optional savepoint name
|
|
||||||
* @return void
|
|
||||||
* @throws Dibi\DriverException
|
|
||||||
*/
|
|
||||||
public function begin($savepoint = NULL)
|
|
||||||
{
|
|
||||||
$this->query($savepoint ? "SAVEPOINT $savepoint" : 'START TRANSACTION');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Commits statements in a transaction.
|
|
||||||
* @param string optional savepoint name
|
|
||||||
* @return void
|
|
||||||
* @throws Dibi\DriverException
|
|
||||||
*/
|
|
||||||
public function commit($savepoint = NULL)
|
|
||||||
{
|
|
||||||
$this->query($savepoint ? "RELEASE SAVEPOINT $savepoint" : 'COMMIT');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Rollback changes in a transaction.
|
|
||||||
* @param string optional savepoint name
|
|
||||||
* @return void
|
|
||||||
* @throws Dibi\DriverException
|
|
||||||
*/
|
|
||||||
public function rollback($savepoint = NULL)
|
|
||||||
{
|
|
||||||
$this->query($savepoint ? "ROLLBACK TO SAVEPOINT $savepoint" : 'ROLLBACK');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the connection resource.
|
|
||||||
* @return resource|NULL
|
|
||||||
*/
|
|
||||||
public function getResource()
|
|
||||||
{
|
|
||||||
return is_resource($this->connection) ? $this->connection : NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the connection reflector.
|
|
||||||
* @return Dibi\Reflector
|
|
||||||
*/
|
|
||||||
public function getReflector()
|
|
||||||
{
|
|
||||||
return new MySqlReflector($this);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Result set driver factory.
|
|
||||||
* @param resource
|
|
||||||
* @return Dibi\ResultDriver
|
|
||||||
*/
|
|
||||||
public function createResultDriver($resource)
|
|
||||||
{
|
|
||||||
$res = clone $this;
|
|
||||||
$res->resultSet = $resource;
|
|
||||||
return $res;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/********************* SQL ****************d*g**/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Encodes data for use in a SQL statement.
|
|
||||||
* @param string value
|
|
||||||
* @return string encoded value
|
|
||||||
*/
|
|
||||||
public function escapeText($value)
|
|
||||||
{
|
|
||||||
if (!is_resource($this->connection)) {
|
|
||||||
throw new Dibi\Exception('Lost connection to server.');
|
|
||||||
}
|
|
||||||
return "'" . mysql_real_escape_string($value, $this->connection) . "'";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function escapeBinary($value)
|
|
||||||
{
|
|
||||||
if (!is_resource($this->connection)) {
|
|
||||||
throw new Dibi\Exception('Lost connection to server.');
|
|
||||||
}
|
|
||||||
return "_binary'" . mysql_real_escape_string($value, $this->connection) . "'";
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param string
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function escapeIdentifier($value)
|
|
||||||
{
|
|
||||||
// @see http://dev.mysql.com/doc/refman/5.0/en/identifiers.html
|
|
||||||
return '`' . str_replace('`', '``', $value) . '`';
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param bool
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function escapeBool($value)
|
|
||||||
{
|
|
||||||
return $value ? 1 : 0;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param \DateTime|\DateTimeInterface|string|int
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function escapeDate($value)
|
|
||||||
{
|
|
||||||
if (!$value instanceof \DateTime && !$value instanceof \DateTimeInterface) {
|
|
||||||
$value = new Dibi\DateTime($value);
|
|
||||||
}
|
|
||||||
return $value->format("'Y-m-d'");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* @param \DateTime|\DateTimeInterface|string|int
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function escapeDateTime($value)
|
|
||||||
{
|
|
||||||
if (!$value instanceof \DateTime && !$value instanceof \DateTimeInterface) {
|
|
||||||
$value = new Dibi\DateTime($value);
|
|
||||||
}
|
|
||||||
return $value->format("'Y-m-d H:i:s.u'");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Encodes string for use in a LIKE statement.
|
|
||||||
* @param string
|
|
||||||
* @param int
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function escapeLike($value, $pos)
|
|
||||||
{
|
|
||||||
$value = addcslashes(str_replace('\\', '\\\\', $value), "\x00\n\r\\'%_");
|
|
||||||
return ($pos <= 0 ? "'%" : "'") . $value . ($pos >= 0 ? "%'" : "'");
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Decodes data from result set.
|
|
||||||
* @param string
|
|
||||||
* @return string
|
|
||||||
*/
|
|
||||||
public function unescapeBinary($value)
|
|
||||||
{
|
|
||||||
return $value;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Injects LIMIT/OFFSET to the SQL query.
|
|
||||||
* @param string
|
|
||||||
* @param int|NULL
|
|
||||||
* @param int|NULL
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function applyLimit(&$sql, $limit, $offset)
|
|
||||||
{
|
|
||||||
if ($limit < 0 || $offset < 0) {
|
|
||||||
throw new Dibi\NotSupportedException('Negative offset or limit.');
|
|
||||||
|
|
||||||
} elseif ($limit !== NULL || $offset) {
|
|
||||||
// see http://dev.mysql.com/doc/refman/5.0/en/select.html
|
|
||||||
$sql .= ' LIMIT ' . ($limit === NULL ? '18446744073709551615' : (int) $limit)
|
|
||||||
. ($offset ? ' OFFSET ' . (int) $offset : '');
|
|
||||||
}
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/********************* result set ****************d*g**/
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Automatically frees the resources allocated for this result set.
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function __destruct()
|
|
||||||
{
|
|
||||||
$this->autoFree && $this->getResultResource() && $this->free();
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the number of rows in a result set.
|
|
||||||
* @return int
|
|
||||||
*/
|
|
||||||
public function getRowCount()
|
|
||||||
{
|
|
||||||
if (!$this->buffered) {
|
|
||||||
throw new Dibi\NotSupportedException('Row count is not available for unbuffered queries.');
|
|
||||||
}
|
|
||||||
return mysql_num_rows($this->resultSet);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Fetches the row at current position and moves the internal cursor to the next position.
|
|
||||||
* @param bool TRUE for associative array, FALSE for numeric
|
|
||||||
* @return array array on success, nonarray if no next record
|
|
||||||
*/
|
|
||||||
public function fetch($assoc)
|
|
||||||
{
|
|
||||||
return mysql_fetch_array($this->resultSet, $assoc ? MYSQL_ASSOC : MYSQL_NUM);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Moves cursor position without fetching row.
|
|
||||||
* @param int the 0-based cursor pos to seek to
|
|
||||||
* @return bool TRUE on success, FALSE if unable to seek to specified record
|
|
||||||
* @throws Dibi\Exception
|
|
||||||
*/
|
|
||||||
public function seek($row)
|
|
||||||
{
|
|
||||||
if (!$this->buffered) {
|
|
||||||
throw new Dibi\NotSupportedException('Cannot seek an unbuffered result set.');
|
|
||||||
}
|
|
||||||
|
|
||||||
return mysql_data_seek($this->resultSet, $row);
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Frees the resources allocated for this result set.
|
|
||||||
* @return void
|
|
||||||
*/
|
|
||||||
public function free()
|
|
||||||
{
|
|
||||||
mysql_free_result($this->resultSet);
|
|
||||||
$this->resultSet = NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns metadata for all columns in a result set.
|
|
||||||
* @return array
|
|
||||||
*/
|
|
||||||
public function getResultColumns()
|
|
||||||
{
|
|
||||||
$count = mysql_num_fields($this->resultSet);
|
|
||||||
$columns = [];
|
|
||||||
for ($i = 0; $i < $count; $i++) {
|
|
||||||
$row = (array) mysql_fetch_field($this->resultSet, $i);
|
|
||||||
$columns[] = [
|
|
||||||
'name' => $row['name'],
|
|
||||||
'table' => $row['table'],
|
|
||||||
'fullname' => $row['table'] ? $row['table'] . '.' . $row['name'] : $row['name'],
|
|
||||||
'nativetype' => strtoupper($row['type']),
|
|
||||||
'type' => $row['type'] === 'time' ? Dibi\Type::TIME_INTERVAL : NULL,
|
|
||||||
'vendor' => $row,
|
|
||||||
];
|
|
||||||
}
|
|
||||||
return $columns;
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
/**
|
|
||||||
* Returns the result set resource.
|
|
||||||
* @return resource|NULL
|
|
||||||
*/
|
|
||||||
public function getResultResource()
|
|
||||||
{
|
|
||||||
$this->autoFree = FALSE;
|
|
||||||
return is_resource($this->resultSet) ? $this->resultSet : NULL;
|
|
||||||
}
|
|
||||||
|
|
||||||
}
|
|
@@ -67,7 +67,7 @@ class Event
|
|||||||
|
|
||||||
$rc = new \ReflectionClass('dibi');
|
$rc = new \ReflectionClass('dibi');
|
||||||
$dibiDir = dirname($rc->getFileName()) . DIRECTORY_SEPARATOR;
|
$dibiDir = dirname($rc->getFileName()) . DIRECTORY_SEPARATOR;
|
||||||
foreach (debug_backtrace(FALSE) as $row) {
|
foreach (debug_backtrace(DEBUG_BACKTRACE_IGNORE_ARGS) as $row) {
|
||||||
if (isset($row['file']) && is_file($row['file']) && strpos($row['file'], $dibiDir) !== 0) {
|
if (isset($row['file']) && is_file($row['file']) && strpos($row['file'], $dibiDir) !== 0) {
|
||||||
$this->source = [$row['file'], (int) $row['line']];
|
$this->source = [$row['file'], (int) $row['line']];
|
||||||
break;
|
break;
|
||||||
|
@@ -35,7 +35,6 @@ spl_autoload_register(function ($class) {
|
|||||||
'DibiMsSql2005Reflector' => 'Dibi\Drivers\SqlsrvReflector',
|
'DibiMsSql2005Reflector' => 'Dibi\Drivers\SqlsrvReflector',
|
||||||
'DibiMsSqlDriver' => 'Dibi\Drivers\MsSqlDriver',
|
'DibiMsSqlDriver' => 'Dibi\Drivers\MsSqlDriver',
|
||||||
'DibiMsSqlReflector' => 'Dibi\Drivers\MsSqlReflector',
|
'DibiMsSqlReflector' => 'Dibi\Drivers\MsSqlReflector',
|
||||||
'DibiMySqlDriver' => 'Dibi\Drivers\MySqlDriver',
|
|
||||||
'DibiMySqliDriver' => 'Dibi\Drivers\MySqliDriver',
|
'DibiMySqliDriver' => 'Dibi\Drivers\MySqliDriver',
|
||||||
'DibiMySqlReflector' => 'Dibi\Drivers\MySqlReflector',
|
'DibiMySqlReflector' => 'Dibi\Drivers\MySqlReflector',
|
||||||
'DibiNotImplementedException' => 'Dibi\NotImplementedException',
|
'DibiNotImplementedException' => 'Dibi\NotImplementedException',
|
||||||
|
@@ -8,14 +8,6 @@ driver = pdo
|
|||||||
dsn = "sqlite::memory:"
|
dsn = "sqlite::memory:"
|
||||||
system = sqlite
|
system = sqlite
|
||||||
|
|
||||||
[mysql]
|
|
||||||
driver = mysql
|
|
||||||
host = 127.0.0.1
|
|
||||||
username = root
|
|
||||||
password = "Password12!"
|
|
||||||
charset = utf8
|
|
||||||
system = mysql
|
|
||||||
|
|
||||||
[mysql improved]
|
[mysql improved]
|
||||||
driver = mysqli
|
driver = mysqli
|
||||||
host = 127.0.0.1
|
host = 127.0.0.1
|
||||||
|
@@ -8,14 +8,6 @@ driver = pdo
|
|||||||
dsn = "sqlite::memory:"
|
dsn = "sqlite::memory:"
|
||||||
system = sqlite
|
system = sqlite
|
||||||
|
|
||||||
[mysql]
|
|
||||||
driver = mysql
|
|
||||||
host = 127.0.0.1
|
|
||||||
username = root
|
|
||||||
password =
|
|
||||||
charset = utf8
|
|
||||||
system = mysql
|
|
||||||
|
|
||||||
[mysql improved]
|
[mysql improved]
|
||||||
driver = mysqli
|
driver = mysqli
|
||||||
host = 127.0.0.1
|
host = 127.0.0.1
|
||||||
|
@@ -8,14 +8,6 @@ driver = pdo
|
|||||||
dsn = "sqlite::memory:"
|
dsn = "sqlite::memory:"
|
||||||
system = sqlite
|
system = sqlite
|
||||||
|
|
||||||
[mysql]
|
|
||||||
driver = mysql
|
|
||||||
host = 127.0.0.1
|
|
||||||
username = root
|
|
||||||
password =
|
|
||||||
charset = utf8
|
|
||||||
system = mysql
|
|
||||||
|
|
||||||
[mysql improved]
|
[mysql improved]
|
||||||
driver = mysqli
|
driver = mysqli
|
||||||
host = 127.0.0.1
|
host = 127.0.0.1
|
||||||
|
@@ -35,10 +35,6 @@ if ($config['system'] === 'odbc') {
|
|||||||
$config['dsn'] = str_replace('data/odbc.mdb', TEMP_DIR . '/odbc.mdb', $config['dsn']);
|
$config['dsn'] = str_replace('data/odbc.mdb', TEMP_DIR . '/odbc.mdb', $config['dsn']);
|
||||||
}
|
}
|
||||||
|
|
||||||
if ($config['driver'] === 'mysql' && PHP_VERSION_ID >= 70000) {
|
|
||||||
Tester\Environment::skip('mysql driver is not supported on PHP 7');
|
|
||||||
}
|
|
||||||
|
|
||||||
|
|
||||||
$conn = new Dibi\Connection($config);
|
$conn = new Dibi\Connection($config);
|
||||||
|
|
||||||
|
@@ -13,5 +13,5 @@ extension=php_pdo_pgsql.dll
|
|||||||
extension=php_pdo_sqlite.dll
|
extension=php_pdo_sqlite.dll
|
||||||
extension=php_pgsql.dll
|
extension=php_pgsql.dll
|
||||||
extension=php_sqlite3.dll
|
extension=php_sqlite3.dll
|
||||||
extension=php_sqlsrv_ts.dll
|
extension=php_sqlsrv_71_ts.dll
|
||||||
extension=php_odbc.dll
|
extension=php_odbc.dll
|
@@ -1,18 +0,0 @@
|
|||||||
[PHP]
|
|
||||||
extension_dir = "./ext"
|
|
||||||
;extension=php_mssql.dll
|
|
||||||
extension=php_mysql.dll
|
|
||||||
extension=php_mysqli.dll
|
|
||||||
;extension=php_oci8.dll
|
|
||||||
;extension=php_oci8_11g.dll
|
|
||||||
;extension=php_pdo_firebird.dll
|
|
||||||
;extension=php_pdo_mssql.dll
|
|
||||||
extension=php_pdo_mysql.dll
|
|
||||||
;extension=php_pdo_oci.dll
|
|
||||||
extension=php_pdo_odbc.dll
|
|
||||||
extension=php_pdo_pgsql.dll
|
|
||||||
extension=php_pdo_sqlite.dll
|
|
||||||
extension=php_pgsql.dll
|
|
||||||
extension=php_sqlite3.dll
|
|
||||||
extension=php_sqlsrv_ts.dll
|
|
||||||
extension=php_pdo_sqlsrv_ts.dll
|
|
Reference in New Issue
Block a user