Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- <?php
- $dbfilename = 'demo.db';
- if (is_file($dbfilename)) {
- unlink($dbfilename);
- }
- $sql = 'CREATE TABLE demo (id int, name string)';
- $result = demoQuery($dbfilename, $sql);
- var_dump($result);
- $sql = 'SELECT * FROM demo WHERE id=0';
- $rows = demoQuery($dbfilename, $sql);
- var_dump($rows);
- $sql = 'INSERT INTO demo VALUES (0, "A")';
- $result = demoQuery($dbfilename, $sql);
- var_dump($result);
- $sql = 'SELECT * FROM demo WHERE id=0';
- $rows = demoQuery($dbfilename, $sql);
- var_dump($rows);
- function demoQuery(string $dbfilename, string $sql) : array {
- $fetchable = (0===stripos(trim($sql), 'select'));
- $db = new SQLite3($dbfilename);
- if ($db === false) {
- throw new Exception("demoQuery: open error " . $dbfilename);
- }
- //$result = $db->query($sql);
- $stmt = $db->prepare($sql);
- if ($stmt === false) {
- throw new Exception("demoQuery: prepare error " . $sql);
- }
- // TODO //$stmt->bindvalue();
- $result = $stmt->execute();
- if ($result === false) {
- throw new Exception("demoQuery: execute query error " . $sql);
- }
- $rows = [];
- if (true) { // Expected to work before reading internals of PHP+SQLite3
- //if ($fetchable) { // May work
- //if ($result->columnName(0) !== false) { // Works
- //if ($result->columnType(0)!=SQLITE3_NULL) { // Didnt work
- //if ($result->fetchArray()) { // Dangerous
- //if ($result->finalize()) { // Cant do that
- //if ($result->numColumns()!==0) { // Works
- //if ($result->reset()) { // Didnt work
- //if ($result->columnName(0) !== false || $result->numColumns()!==0) { // My best
- while ($row = $result->fetchArray()) {
- $rows[] = $row;
- }
- }
- $db->close();
- return $rows;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement