<?php // 5
// EXAMPLE FILE for Sqlitei.class.php
// requires the class file
require( 'Sqlitei.class.php' );
// try all these things ...
try {
// new Sqlitei instance
$connect = &new Sqlitei( 'test.sqlitei' );
// Uncomment if this is at least second time you're testing this file
/*
// Dopping table ...
$stmt = $connect->prepare("DROP TABLE test");
// execute drop
$stmt->execute();
// close this prepared query
$stmt->close();
// */
// table creation, prepare the query
$stmt = $connect->prepare("CREATE TABLE test ( id INTEGER PRIMARY KEY, something VARCHAR(255) )");
// simple error management with try / catch sintax
try {
// execute the prepared query
$stmt->execute();
// close this prepared query
$stmt->close();
}
catch( Exception $e ) {
// if somethong on query was wrong, die with a message
die( $e->getMessage() );
}
// new prepared query, this time with 2 variables
$stmt = $connect->prepare("INSERT INTO test VALUES( ?, ? )");
// try to do queries ...
try {
// first table id, start from 1
$id = 1;
// multiple queries generation
for( $a = 0; $a < 100; $a++ ) {
// foreach $a insert 2 rows to test slashes on sqlite ...
$something = 'test number '.( $a + 1 ).'a with "this" and \'that\' !';
// send parameters to use for this query
// i = integer value
// s = not int, not double, not bool but everything else ( a string for example )
$stmt->bind_param( 'is', $id++, $something );
// and again, with differents slashes
$something = "test number ".( $a + 1 )."b with \"this\" and 'that' !";
$stmt->bind_param( 'is', $id++, $something );
}
// execute all prepared queries
// NOTE: with multiple queries this class automatically uses a TRANSACTION
// then if there is an error, its ROLLBACKs queries
$stmt->execute();
// close all these queries ...
$stmt->close();
}
// ... or give me the error
catch( Exception $e ) {
die( $e->getMessage() );
}
// prepare another query, this time with a SELECT statement
$stmt = $connect->prepare("SELECT * FROM test LIMIT 0, ?");
// try my operations ...
try {
// limit 0, how many ??? ...
$stmt->bind_param( 'i', 10 );
// really impossible for me to clone the MySQLI bind_result method
// ... it's something like that but you can't send directly undefined variables ...
// then send reult names, it's simple too
$stmt->bind_result( 'id', 'text' );
// execute this query
$stmt->execute();
// as MySQLI does, you can use fetch() method too ...
while( $stmt->fetch() ) {
// then to use binded results, just call this object with those names !
echo 'ID: '.$stmt->id.'<br />'; // the id
echo "TEXT: {$stmt->text}<br />"; // and the text value !
echo '<hr />';
}
// and close this query
$stmt->close();
}
// ... or tell me the error!
catch( Exception $e ) {
die( $e->getMessage() );
}
// however, you can use all default SQLiteDatabase class methods, isn't cool ?
// just query !
$query = $connect->query( 'SELECT * FROM test' );
// for example, the number of rows ...
echo 'Total Rows = '.$query->numRows();
// close database connection, resets all and unset internal SQLiteDatabase class
$connect->close();
}
// or tell me what's wrong
catch( Exception $e ) {
die( $e->getMessage() );
}
?>
|