1
0
mirror of https://github.com/dg/dibi.git synced 2025-02-22 09:53:11 +01:00
php-dibi/examples/query-language-and-conditions.php

62 lines
1.1 KiB
PHP
Raw Normal View History

2010-08-03 12:28:07 +02:00
<!DOCTYPE html><link rel="stylesheet" href="data/style.css">
2010-08-03 11:48:51 +02:00
<h1>Query Language & Conditions | dibi</h1>
2010-08-03 12:28:07 +02:00
2008-07-17 03:51:29 +00:00
<?php
require __DIR__ . '/../dibi/dibi.php';
2008-07-17 03:51:29 +00:00
dibi::connect(array(
2012-12-16 19:31:37 +01:00
'driver' => 'sqlite3',
'database' => 'data/sample.s3db',
2008-07-17 03:51:29 +00:00
));
2010-08-03 11:48:51 +02:00
// some variables
2008-10-28 02:06:55 +00:00
$cond1 = TRUE;
$cond2 = FALSE;
2008-07-17 03:51:29 +00:00
$foo = -1;
$bar = 2;
2010-08-03 11:48:51 +02:00
// conditional variable
2008-07-17 03:51:29 +00:00
$name = $cond1 ? 'K%' : NULL;
// if & end
dibi::test('
2010-08-03 11:48:51 +02:00
SELECT *
FROM customers
%if', isset($name), 'WHERE name LIKE ?', $name, '%end'
2008-07-17 03:51:29 +00:00
);
// -> SELECT * FROM customers WHERE name LIKE 'K%'
2008-10-28 02:06:55 +00:00
2008-07-17 03:51:29 +00:00
// if & else & (optional) end
dibi::test("
2010-08-03 11:48:51 +02:00
SELECT *
FROM people
WHERE id > 0
%if", ($foo > 0), "AND foo=?", $foo, "
%else %if", ($bar > 0), "AND bar=?", $bar, "
2008-07-17 03:51:29 +00:00
");
// -> SELECT * FROM people WHERE id > 0 AND bar=2
2008-10-28 02:06:55 +00:00
2008-07-17 03:51:29 +00:00
// nested condition
dibi::test('
2010-08-03 11:48:51 +02:00
SELECT *
FROM customers
2010-08-03 11:48:51 +02:00
WHERE
%if', isset($name), 'name LIKE ?', $name, '
%if', $cond2, 'AND admin=1 %end
2010-08-03 11:48:51 +02:00
%else 1 LIMIT 10 %end'
2008-07-17 03:51:29 +00:00
);
// -> SELECT * FROM customers WHERE LIMIT 10
2012-12-16 19:31:37 +01:00
// IF()
dibi::test('UPDATE products SET', array(
'price' => array('IF(price_fixed, price, ?)', 123),
));
// -> SELECT * FROM customers WHERE LIMIT 10