mirror of
https://github.com/dg/dibi.git
synced 2025-07-31 11:20:25 +02:00
bugfix, enhanced error reporting, better examples
This commit is contained in:
@@ -12,7 +12,7 @@
|
|||||||
* @license GNU GENERAL PUBLIC LICENSE version 2
|
* @license GNU GENERAL PUBLIC LICENSE version 2
|
||||||
* @package dibi
|
* @package dibi
|
||||||
* @category Database
|
* @category Database
|
||||||
* @version 0.8 (Revision: $WCREV$, Date: $WCDATE$)
|
* @version 0.8b (Revision: $WCREV$, Date: $WCDATE$)
|
||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
@@ -26,7 +26,7 @@
|
|||||||
*/
|
*/
|
||||||
|
|
||||||
|
|
||||||
define('DIBI', '0.8 (Revision: $WCREV$, Date: $WCDATE$)');
|
define('DIBI', '0.8b (Revision: $WCREV$, Date: $WCDATE$)');
|
||||||
|
|
||||||
|
|
||||||
if (version_compare(PHP_VERSION , '5.0.3', '<'))
|
if (version_compare(PHP_VERSION , '5.0.3', '<'))
|
||||||
@@ -240,7 +240,10 @@ class dibi
|
|||||||
*/
|
*/
|
||||||
static public function query($args)
|
static public function query($args)
|
||||||
{
|
{
|
||||||
|
// receive arguments
|
||||||
|
if (!is_array($args))
|
||||||
$args = func_get_args();
|
$args = func_get_args();
|
||||||
|
|
||||||
return self::getConnection()->query($args);
|
return self::getConnection()->query($args);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@@ -80,7 +80,7 @@ class DibiMySqlDriver extends DibiDriver
|
|||||||
|
|
||||||
|
|
||||||
if (!is_resource($conn))
|
if (!is_resource($conn))
|
||||||
throw new DibiException("Connecting error", array(
|
throw new DibiException("Connecting error (driver mysql)'", array(
|
||||||
'message' => mysql_error() ? mysql_error() : $php_errormsg,
|
'message' => mysql_error() ? mysql_error() : $php_errormsg,
|
||||||
'code' => mysql_errno(),
|
'code' => mysql_errno(),
|
||||||
));
|
));
|
||||||
@@ -94,7 +94,7 @@ class DibiMySqlDriver extends DibiDriver
|
|||||||
|
|
||||||
if (!empty($config['database'])) {
|
if (!empty($config['database'])) {
|
||||||
if (!@mysql_select_db($config['database'], $conn))
|
if (!@mysql_select_db($config['database'], $conn))
|
||||||
throw new DibiException("Connecting error", array(
|
throw new DibiException("Connecting error (driver mysql)", array(
|
||||||
'message' => mysql_error($conn),
|
'message' => mysql_error($conn),
|
||||||
'code' => mysql_errno($conn),
|
'code' => mysql_errno($conn),
|
||||||
));
|
));
|
||||||
|
@@ -65,7 +65,7 @@ class DibiMySqliDriver extends DibiDriver
|
|||||||
$conn = @mysqli_connect($config['host'], $config['username'], $config['password'], $config['database'], $config['port']);
|
$conn = @mysqli_connect($config['host'], $config['username'], $config['password'], $config['database'], $config['port']);
|
||||||
|
|
||||||
if (!$conn)
|
if (!$conn)
|
||||||
throw new DibiException("Connecting error", array(
|
throw new DibiException("Connecting error (driver mysqli)", array(
|
||||||
'message' => mysqli_connect_error(),
|
'message' => mysqli_connect_error(),
|
||||||
'code' => mysqli_connect_errno(),
|
'code' => mysqli_connect_errno(),
|
||||||
));
|
));
|
||||||
|
@@ -48,13 +48,13 @@ class DibiOdbcDriver extends DibiDriver
|
|||||||
if (empty($config['database'])) $config['database'] = ini_get('odbc.default_db');
|
if (empty($config['database'])) $config['database'] = ini_get('odbc.default_db');
|
||||||
|
|
||||||
if (empty($config['username']))
|
if (empty($config['username']))
|
||||||
throw new DibiException("Username must be specified");
|
throw new DibiException("Username must be specified (driver odbc)");
|
||||||
|
|
||||||
if (empty($config['password']))
|
if (empty($config['password']))
|
||||||
throw new DibiException("Password must be specified");
|
throw new DibiException("Password must be specified (driver odbc)");
|
||||||
|
|
||||||
if (empty($config['database']))
|
if (empty($config['database']))
|
||||||
throw new DibiException("Database must be specified");
|
throw new DibiException("Database must be specified (driver odbc)");
|
||||||
|
|
||||||
parent::__construct($config);
|
parent::__construct($config);
|
||||||
}
|
}
|
||||||
@@ -71,7 +71,7 @@ class DibiOdbcDriver extends DibiDriver
|
|||||||
$conn = @odbc_pconnect($config['database'], $config['username'], $config['password']);
|
$conn = @odbc_pconnect($config['database'], $config['username'], $config['password']);
|
||||||
|
|
||||||
if (!is_resource($conn))
|
if (!is_resource($conn))
|
||||||
throw new DibiException("Connecting error", array(
|
throw new DibiException("Connecting error (driver odbc)", array(
|
||||||
'message' => odbc_errormsg(),
|
'message' => odbc_errormsg(),
|
||||||
'code' => odbc_error(),
|
'code' => odbc_error(),
|
||||||
));
|
));
|
||||||
@@ -177,7 +177,7 @@ class DibiOdbcDriver extends DibiDriver
|
|||||||
if ($limit >= 0)
|
if ($limit >= 0)
|
||||||
$sql = 'SELECT TOP ' . (int) $limit . ' * FROM (' . $sql . ')';
|
$sql = 'SELECT TOP ' . (int) $limit . ' * FROM (' . $sql . ')';
|
||||||
|
|
||||||
if ($offset) throw new DibiException('Offset is not implemented.');
|
if ($offset) throw new DibiException('Offset is not implemented in driver odbc');
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
@@ -42,7 +42,7 @@ class DibiPdoDriver extends DibiDriver
|
|||||||
throw new DibiException("PHP extension 'pdo' is not loaded");
|
throw new DibiException("PHP extension 'pdo' is not loaded");
|
||||||
|
|
||||||
if (empty($config['dsn']))
|
if (empty($config['dsn']))
|
||||||
throw new DibiException("DSN must be specified");
|
throw new DibiException("DSN must be specified (driver odbc)");
|
||||||
|
|
||||||
if (empty($config['username'])) $config['username'] = NULL;
|
if (empty($config['username'])) $config['username'] = NULL;
|
||||||
if (empty($config['password'])) $config['password'] = NULL;
|
if (empty($config['password'])) $config['password'] = NULL;
|
||||||
|
@@ -43,7 +43,7 @@ class DibiPostgreDriver extends DibiDriver
|
|||||||
throw new DibiException("PHP extension 'pgsql' is not loaded");
|
throw new DibiException("PHP extension 'pgsql' is not loaded");
|
||||||
|
|
||||||
if (empty($config['string']))
|
if (empty($config['string']))
|
||||||
throw new DibiException("Connection string must be specified");
|
throw new DibiException("Connection string must be specified (driver postgre)");
|
||||||
|
|
||||||
if (empty($config['type'])) $config['type'] = NULL;
|
if (empty($config['type'])) $config['type'] = NULL;
|
||||||
|
|
||||||
@@ -62,7 +62,7 @@ class DibiPostgreDriver extends DibiDriver
|
|||||||
$conn = @pg_pconnect($config['string'], $config['type']);
|
$conn = @pg_pconnect($config['string'], $config['type']);
|
||||||
|
|
||||||
if (!is_resource($conn))
|
if (!is_resource($conn))
|
||||||
throw new DibiException("Connecting error", array(
|
throw new DibiException("Connecting error (driver postgre)", array(
|
||||||
'message' => pg_last_error(),
|
'message' => pg_last_error(),
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@@ -44,7 +44,7 @@ class DibiSqliteDriver extends DibiDriver
|
|||||||
throw new DibiException("PHP extension 'sqlite' is not loaded");
|
throw new DibiException("PHP extension 'sqlite' is not loaded");
|
||||||
|
|
||||||
if (empty($config['database']))
|
if (empty($config['database']))
|
||||||
throw new DibiException("Database must be specified");
|
throw new DibiException("Database must be specified (driver sqlite)");
|
||||||
|
|
||||||
if (!isset($config['mode']))
|
if (!isset($config['mode']))
|
||||||
$config['mode'] = 0666;
|
$config['mode'] = 0666;
|
||||||
@@ -65,7 +65,7 @@ class DibiSqliteDriver extends DibiDriver
|
|||||||
$conn = @sqlite_popen($config['database'], $config['mode'], $errorMsg);
|
$conn = @sqlite_popen($config['database'], $config['mode'], $errorMsg);
|
||||||
|
|
||||||
if (!$conn)
|
if (!$conn)
|
||||||
throw new DibiException("Connecting error", array(
|
throw new DibiException("Connecting error (driver sqlite)", array(
|
||||||
'message' => $errorMsg,
|
'message' => $errorMsg,
|
||||||
));
|
));
|
||||||
|
|
||||||
|
@@ -123,13 +123,14 @@ abstract class DibiDriver
|
|||||||
dibi::log(
|
dibi::log(
|
||||||
"ERROR: $info[message]"
|
"ERROR: $info[message]"
|
||||||
. "\n-- SQL: " . $sql
|
. "\n-- SQL: " . $sql
|
||||||
|
. "\n-- driver: " . $this->config['driver']
|
||||||
. ";\n-- " . date('Y-m-d H:i:s ')
|
. ";\n-- " . date('Y-m-d H:i:s ')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
|
||||||
if (dibi::$throwExceptions) {
|
if (dibi::$throwExceptions) {
|
||||||
$info = $this->errorInfo();
|
$info = $this->errorInfo();
|
||||||
throw new DibiException('Query error', $info, $sql);
|
throw new DibiException('Query error (driver ' . $this->config['driver'] . ')', $info, $sql);
|
||||||
} else {
|
} else {
|
||||||
$info = $this->errorInfo();
|
$info = $this->errorInfo();
|
||||||
if ($info['code']) $info['message'] = "[$info[code]] $info[message]";
|
if ($info['code']) $info['message'] = "[$info[code]] $info[message]";
|
||||||
@@ -146,6 +147,7 @@ abstract class DibiDriver
|
|||||||
"OK: " . $sql
|
"OK: " . $sql
|
||||||
. ";\n-- result: $msg"
|
. ";\n-- result: $msg"
|
||||||
. "\n-- takes: " . sprintf('%0.3f', $timer * 1000) . ' ms'
|
. "\n-- takes: " . sprintf('%0.3f', $timer * 1000) . ' ms'
|
||||||
|
. "\n-- driver: " . $this->config['driver']
|
||||||
. "\n-- " . date('Y-m-d H:i:s ')
|
. "\n-- " . date('Y-m-d H:i:s ')
|
||||||
);
|
);
|
||||||
}
|
}
|
||||||
|
@@ -5,6 +5,12 @@ require_once '../dibi/dibi.php';
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
|
// connects to SQlite
|
||||||
|
dibi::connect(array(
|
||||||
|
'driver' => 'sqlite',
|
||||||
|
'database' => 'sample.sdb',
|
||||||
|
));
|
||||||
|
|
||||||
// connects to MySQL using DSN
|
// connects to MySQL using DSN
|
||||||
dibi::connect('driver=mysql&host=localhost&username=root&password=xxx&database=test&charset=utf8');
|
dibi::connect('driver=mysql&host=localhost&username=root&password=xxx&database=test&charset=utf8');
|
||||||
|
|
||||||
@@ -29,13 +35,6 @@ try {
|
|||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
// connects to SQlite
|
|
||||||
dibi::connect(array(
|
|
||||||
'driver' => 'sqlite',
|
|
||||||
'database' => 'mydb.sdb',
|
|
||||||
));
|
|
||||||
|
|
||||||
|
|
||||||
// connects to PostgreSql
|
// connects to PostgreSql
|
||||||
dibi::connect(array(
|
dibi::connect(array(
|
||||||
'driver' => 'postgre',
|
'driver' => 'postgre',
|
||||||
|
@@ -6,19 +6,18 @@ if (function_exists('date_default_timezone_set'))
|
|||||||
date_default_timezone_set('Europe/Prague');
|
date_default_timezone_set('Europe/Prague');
|
||||||
|
|
||||||
|
|
||||||
// CHANGE TO REAL PARAMETERS!
|
|
||||||
dibi::connect(array(
|
dibi::connect(array(
|
||||||
'driver' => 'mysql',
|
'driver' => 'sqlite',
|
||||||
'host' => 'localhost',
|
'database' => 'sample.sdb',
|
||||||
'username' => 'root',
|
|
||||||
'password' => 'xxx',
|
|
||||||
'database' => 'dibi',
|
|
||||||
'charset' => 'utf8',
|
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
|
|
||||||
$res = dibi::query('SELECT * FROM [mytable]');
|
$res = dibi::query('
|
||||||
|
SELECT * FROM [products]
|
||||||
|
INNER JOIN [orders] USING ([product_id])
|
||||||
|
INNER JOIN [customers] USING ([customer_id])
|
||||||
|
');
|
||||||
|
|
||||||
// get last SQL
|
// get last SQL
|
||||||
$sql = dibi::$sql;
|
$sql = dibi::$sql;
|
||||||
|
@@ -4,42 +4,72 @@
|
|||||||
require_once '../dibi/dibi.php';
|
require_once '../dibi/dibi.php';
|
||||||
|
|
||||||
|
|
||||||
// CHANGE TO REAL PARAMETERS!
|
|
||||||
dibi::connect(array(
|
dibi::connect(array(
|
||||||
'driver' => 'mysql',
|
'driver' => 'sqlite',
|
||||||
'host' => 'localhost',
|
'database' => 'sample.sdb',
|
||||||
'username' => 'root',
|
|
||||||
'password' => 'xxx',
|
|
||||||
'database' => 'dibi',
|
|
||||||
'charset' => 'utf8',
|
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
$res = dibi::query('SELECT * FROM [mytable]');
|
/*
|
||||||
if (!$res) die('SQL error');
|
TABLE products
|
||||||
|
|
||||||
|
product_id | title
|
||||||
|
-----------+----------
|
||||||
|
1 | Chair
|
||||||
|
2 | Table
|
||||||
|
3 | Computer
|
||||||
|
|
||||||
|
*/
|
||||||
|
|
||||||
|
|
||||||
// fetch a single value
|
// fetch a single value
|
||||||
|
$res = dibi::query('SELECT [title] FROM [products]');
|
||||||
|
if (!$res) die('SQL error');
|
||||||
|
|
||||||
$value = $res->fetchSingle();
|
$value = $res->fetchSingle();
|
||||||
|
print_r($value); // Chair
|
||||||
|
echo '<hr>';
|
||||||
|
|
||||||
|
|
||||||
// fetch complete result set
|
// fetch complete result set
|
||||||
|
$res = dibi::query('SELECT * FROM [products]');
|
||||||
$all = $res->fetchAll();
|
$all = $res->fetchAll();
|
||||||
|
print_r($all);
|
||||||
|
echo '<hr>';
|
||||||
|
|
||||||
|
|
||||||
// fetch complete result set like association array
|
// fetch complete result set like association array
|
||||||
$assoc = $res->fetchAssoc('id');
|
$assoc = $res->fetchAssoc('title'); // key
|
||||||
|
print_r($assoc);
|
||||||
|
echo '<hr>';
|
||||||
|
|
||||||
$assoc = $res->fetchAssoc('id', 'id2');
|
|
||||||
|
|
||||||
// fetch complete result set like pairs key => value
|
// fetch complete result set like pairs key => value
|
||||||
$pairs = $res->fetchPairs('id', 'name');
|
$pairs = $res->fetchPairs('product_id', 'title');
|
||||||
|
print_r($pairs);
|
||||||
|
echo '<hr>';
|
||||||
|
|
||||||
|
|
||||||
// fetch row by row
|
// fetch row by row
|
||||||
foreach ($res as $row => $fields) {
|
foreach ($res as $row => $fields) {
|
||||||
print_r($fields);
|
print_r($fields);
|
||||||
}
|
}
|
||||||
|
echo '<hr>';
|
||||||
|
|
||||||
|
|
||||||
// fetch row by row with defined offset and limit
|
// fetch row by row with defined offset and limit
|
||||||
foreach ($res->getIterator(2, 3) as $row => $fields) {
|
foreach ($res->getIterator(2, 1) as $row => $fields) {
|
||||||
print_r($fields);
|
print_r($fields);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
|
// more complex association array
|
||||||
|
$res = dibi::query('
|
||||||
|
SELECT * FROM [products]
|
||||||
|
INNER JOIN [orders] USING ([product_id])
|
||||||
|
INNER JOIN [customers] USING ([customer_id])
|
||||||
|
');
|
||||||
|
|
||||||
|
$assoc = $res->fetchAssoc('customers.name,products.title'); // key
|
||||||
|
print_r($assoc);
|
||||||
|
echo '<hr>';
|
||||||
|
154
examples/log.sql
154
examples/log.sql
@@ -1,140 +1,24 @@
|
|||||||
OK: connected to DB 'mysql'
|
OK: connected to DB 'sqlite'
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` = 38;
|
OK: SELECT * FROM [customers] WHERE [customer_id] = 1;
|
||||||
-- result: object(DibiMySqlResult) rows: 0
|
-- result: object(DibiSqliteResult) rows: 1
|
||||||
-- takes: 1.109 ms
|
-- takes: 0.331 ms
|
||||||
-- 2007-02-02 04:38:34
|
-- driver: sqlite
|
||||||
|
-- 2007-05-12 00:14:11
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` < 38;
|
OK: SELECT * FROM [customers] WHERE [customer_id] < 5;
|
||||||
-- result: object(DibiMySqlResult) rows: 12
|
-- result: object(DibiSqliteResult) rows: 4
|
||||||
-- takes: 1.492 ms
|
-- takes: 0.324 ms
|
||||||
-- 2007-02-02 04:38:34
|
-- driver: sqlite
|
||||||
|
-- 2007-05-12 00:14:11
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
ERROR: [1] SQL logic error or missing database
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
-- SQL: SELECT FROM [customers] WHERE [customer_id] < 5
|
||||||
-- 2007-02-02 04:38:34
|
-- driver: sqlite;
|
||||||
|
-- 2007-05-12 00:14:11
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
ERROR: [1] SQL logic error or missing database
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
-- SQL: SELECT FROM [customers] WHERE [customer_id] < 38
|
||||||
-- 2007-02-02 04:38:34
|
-- driver: sqlite;
|
||||||
|
-- 2007-05-12 00:14:11
|
||||||
OK: connected to DB 'mysql'
|
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` = 38;
|
|
||||||
-- result: object(DibiMySqlResult) rows: 0
|
|
||||||
-- takes: 1.565 ms
|
|
||||||
-- 2007-02-02 04:47:37
|
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- result: object(DibiMySqlResult) rows: 12
|
|
||||||
-- takes: 1.347 ms
|
|
||||||
-- 2007-02-02 04:47:37
|
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- 2007-02-02 04:47:37
|
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- 2007-02-02 04:47:37
|
|
||||||
|
|
||||||
OK: connected to DB 'mysql'
|
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` = 38;
|
|
||||||
-- result: object(DibiMySqlResult) rows: 0
|
|
||||||
-- takes: 1.147 ms
|
|
||||||
-- 2007-02-02 04:47:56
|
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- result: object(DibiMySqlResult) rows: 12
|
|
||||||
-- takes: 1.085 ms
|
|
||||||
-- 2007-02-02 04:47:56
|
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- 2007-02-02 04:47:56
|
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- 2007-02-02 04:47:57
|
|
||||||
|
|
||||||
OK: connected to DB 'mysql'
|
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` = 38;
|
|
||||||
-- result: object(DibiMySqlResult) rows: 0
|
|
||||||
-- takes: 0.944 ms
|
|
||||||
-- 2007-02-02 04:48:23
|
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- result: object(DibiMySqlResult) rows: 12
|
|
||||||
-- takes: 1.258 ms
|
|
||||||
-- 2007-02-02 04:48:23
|
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- 2007-02-02 04:48:23
|
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- 2007-02-02 04:48:23
|
|
||||||
|
|
||||||
OK: connected to DB 'mysql'
|
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` = 38;
|
|
||||||
-- result: object(DibiMySqlResult) rows: 0
|
|
||||||
-- takes: 1.039 ms
|
|
||||||
-- 2007-02-02 04:50:46
|
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- result: object(DibiMySqlResult) rows: 12
|
|
||||||
-- takes: 1.499 ms
|
|
||||||
-- 2007-02-02 04:50:46
|
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- 2007-02-02 04:50:46
|
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- 2007-02-02 04:50:46
|
|
||||||
|
|
||||||
OK: connected to DB 'mysql'
|
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` = 38;
|
|
||||||
-- result: object(DibiMySqlResult) rows: 0
|
|
||||||
-- takes: 1.518 ms
|
|
||||||
-- 2007-03-28 00:45:27
|
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- result: object(DibiMySqlResult) rows: 12
|
|
||||||
-- takes: 6.385 ms
|
|
||||||
-- 2007-03-28 00:45:27
|
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- 2007-03-28 00:45:27
|
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- 2007-03-28 00:45:27
|
|
||||||
|
|
||||||
OK: connected to DB 'mysql'
|
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` = 38;
|
|
||||||
-- result: object(DibiMySqlResult) rows: 0
|
|
||||||
-- takes: 1.124 ms
|
|
||||||
-- 2007-03-28 01:06:07
|
|
||||||
|
|
||||||
OK: SELECT * FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- result: object(DibiMySqlResult) rows: 12
|
|
||||||
-- takes: 1.607 ms
|
|
||||||
-- 2007-03-28 01:06:07
|
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- 2007-03-28 01:06:07
|
|
||||||
|
|
||||||
ERROR: [1064] You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'FROM `mytable` WHERE `inumber` < 38' at line 1
|
|
||||||
-- SQL: SELECT FROM `mytable` WHERE `inumber` < 38;
|
|
||||||
-- 2007-03-28 01:06:07
|
|
||||||
|
|
||||||
|
@@ -19,14 +19,9 @@ dibi::$logAll = TRUE;
|
|||||||
|
|
||||||
|
|
||||||
|
|
||||||
// CHANGE TO REAL PARAMETERS!
|
|
||||||
dibi::connect(array(
|
dibi::connect(array(
|
||||||
'driver' => 'mysql',
|
'driver' => 'sqlite',
|
||||||
'host' => 'localhost',
|
'database' => 'sample.sdb',
|
||||||
'username' => 'root',
|
|
||||||
'password' => 'xxx',
|
|
||||||
'database' => 'dibi',
|
|
||||||
'charset' => 'utf8',
|
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
@@ -36,13 +31,13 @@ dibi::$throwExceptions = FALSE;
|
|||||||
echo '<h1>User-level errors</h1>';
|
echo '<h1>User-level errors</h1>';
|
||||||
|
|
||||||
|
|
||||||
$res = dibi::query('SELECT * FROM [mytable] WHERE [inumber] = %i', 38);
|
$res = dibi::query('SELECT * FROM [customers] WHERE [customer_id] = %i', 1);
|
||||||
|
|
||||||
|
|
||||||
$res = dibi::query('SELECT * FROM [mytable] WHERE [inumber] < %i', 38);
|
$res = dibi::query('SELECT * FROM [customers] WHERE [customer_id] < %i', 5);
|
||||||
|
|
||||||
|
|
||||||
$res = dibi::query('SELECT FROM [mytable] WHERE [inumber] < %i', 38);
|
$res = dibi::query('SELECT FROM [customers] WHERE [customer_id] < %i', 5);
|
||||||
|
|
||||||
echo "<br />See file ", dibi::$logFile;
|
echo "<br />See file ", dibi::$logFile;
|
||||||
|
|
||||||
@@ -54,7 +49,7 @@ echo '<h1>DibiException</h1>';
|
|||||||
|
|
||||||
try {
|
try {
|
||||||
|
|
||||||
$res = dibi::query('SELECT FROM [mytable] WHERE [inumber] < %i', 38);
|
$res = dibi::query('SELECT FROM [customers] WHERE [customer_id] < %i', 38);
|
||||||
|
|
||||||
} catch (DibiException $e) {
|
} catch (DibiException $e) {
|
||||||
|
|
||||||
|
@@ -4,28 +4,24 @@
|
|||||||
require_once '../dibi/dibi.php';
|
require_once '../dibi/dibi.php';
|
||||||
|
|
||||||
|
|
||||||
// CHANGE TO REAL PARAMETERS!
|
|
||||||
dibi::connect(array(
|
dibi::connect(array(
|
||||||
'driver' => 'mysql',
|
'driver' => 'sqlite',
|
||||||
'host' => 'localhost',
|
'database' => 'sample.sdb',
|
||||||
'username' => 'root',
|
|
||||||
'password' => 'xxx',
|
|
||||||
'database' => 'dibi',
|
|
||||||
'charset' => 'utf8',
|
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
$res = dibi::query('SELECT * FROM [mytable] WHERE [inumber] <> %i', 38);
|
$res = dibi::query('SELECT * FROM [customers]');
|
||||||
if (!$res) die('SQL error');
|
if (!$res) die('SQL error');
|
||||||
|
|
||||||
|
|
||||||
// auto-convert this field to integer
|
// auto-convert this field to integer
|
||||||
$res->setType('inumber', Dibi::FIELD_INTEGER);
|
$res->setType('customer_id', Dibi::FIELD_INTEGER);
|
||||||
$record = $res->fetch();
|
$record = $res->fetch();
|
||||||
var_dump($record);
|
var_dump($record);
|
||||||
|
|
||||||
|
|
||||||
// auto-detect all types
|
// auto-detect all types
|
||||||
|
// WARNING: THIS WILL NOT WORK WITH SQLITE
|
||||||
$res->setType(TRUE);
|
$res->setType(TRUE);
|
||||||
$record = $res->fetch();
|
$record = $res->fetch();
|
||||||
var_dump($record);
|
var_dump($record);
|
||||||
|
BIN
examples/sample.sdb
Normal file
BIN
examples/sample.sdb
Normal file
Binary file not shown.
@@ -11,14 +11,9 @@ if (function_exists('date_default_timezone_set'))
|
|||||||
date_default_timezone_set('Europe/Prague'); // or 'GMT'
|
date_default_timezone_set('Europe/Prague'); // or 'GMT'
|
||||||
|
|
||||||
|
|
||||||
// CHANGE TO REAL PARAMETERS!
|
|
||||||
dibi::connect(array(
|
dibi::connect(array(
|
||||||
'driver' => 'mysql',
|
'driver' => 'sqlite',
|
||||||
'host' => 'localhost',
|
'database' => 'sample.sdb',
|
||||||
'username' => 'root',
|
|
||||||
'password' => 'xxx',
|
|
||||||
'database' => 'dibi',
|
|
||||||
'charset' => 'utf8',
|
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
|
@@ -7,14 +7,9 @@ pre.dibi { padding-bottom: 10px; }
|
|||||||
require_once '../dibi/dibi.php';
|
require_once '../dibi/dibi.php';
|
||||||
|
|
||||||
|
|
||||||
// CHANGE TO REAL PARAMETERS!
|
|
||||||
dibi::connect(array(
|
dibi::connect(array(
|
||||||
'driver' => 'mysql',
|
'driver' => 'sqlite',
|
||||||
'host' => 'localhost',
|
'database' => 'sample.sdb',
|
||||||
'username' => 'root',
|
|
||||||
'password' => 'xxx',
|
|
||||||
'database' => 'dibi',
|
|
||||||
'charset' => 'utf8',
|
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
@@ -22,29 +17,29 @@ $cond1 = rand(0,2) < 1;
|
|||||||
$cond2 = rand(0,2) < 1;
|
$cond2 = rand(0,2) < 1;
|
||||||
|
|
||||||
|
|
||||||
$user = $cond1 ? 'Davidek' : NULL;
|
$name = $cond1 ? 'K%' : NULL;
|
||||||
|
|
||||||
|
|
||||||
|
// if & end
|
||||||
dibi::test('
|
dibi::test('
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM [mytable]
|
FROM [customers]
|
||||||
%if', isset($user), 'WHERE [user]=%s', $user, '%end'
|
%if', isset($name), 'WHERE [name] LIKE %s', $name, '%end'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// last end is optional
|
// if & else & end (last end is optional)
|
||||||
dibi::test('
|
dibi::test('
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM %if', $cond1, '[one_table] %else [second_table]'
|
FROM %if', $cond1, '[customers] %else [products]'
|
||||||
);
|
);
|
||||||
|
|
||||||
|
|
||||||
// nested condition
|
// nested condition
|
||||||
dibi::test('
|
dibi::test('
|
||||||
SELECT *
|
SELECT *
|
||||||
FROM [mytable]
|
FROM [customers]
|
||||||
WHERE
|
WHERE
|
||||||
%if', isset($user), '[user]=%s', $user, '
|
%if', isset($name), '[name] LIKE %s', $name, '
|
||||||
%if', $cond2, 'AND [admin]=1 %end
|
%if', $cond2, 'AND [admin]=1 %end
|
||||||
%else LIMIT 10 %end'
|
%else LIMIT 10 %end'
|
||||||
);
|
);
|
||||||
|
@@ -3,14 +3,9 @@
|
|||||||
require_once '../dibi/dibi.php';
|
require_once '../dibi/dibi.php';
|
||||||
|
|
||||||
|
|
||||||
// CHANGE TO REAL PARAMETERS!
|
|
||||||
dibi::connect(array(
|
dibi::connect(array(
|
||||||
'driver' => 'mysql',
|
'driver' => 'sqlite',
|
||||||
'host' => 'localhost',
|
'database' => 'sample.sdb',
|
||||||
'username' => 'root',
|
|
||||||
'password' => 'xxx',
|
|
||||||
'database' => 'dibi',
|
|
||||||
'charset' => 'utf8',
|
|
||||||
));
|
));
|
||||||
|
|
||||||
|
|
||||||
|
@@ -1,4 +1,4 @@
|
|||||||
Dibi version 0.8
|
Dibi version 0.8b
|
||||||
|
|
||||||
Revision: $WCREV$
|
Revision: $WCREV$
|
||||||
Date: $WCDATE$
|
Date: $WCDATE$
|
||||||
|
Reference in New Issue
Block a user