Category
stdlib
Problem
Database access via PDO, PDOStatement, and driver DSNs (pdo_mysql, pdo_sqlite, …) is absent. Framework bootstrap code and many examples assume new PDO($dsn, $user, $pass) with prepared statements.
php-src reference
ext/pdo/pdo.c — php_pdo_register_driver, connection lifecycle
ext/pdo/pdo_dbh.c — PDO methods (query, prepare, exec, …)
ext/pdo/pdo_stmt.c — PDOStatement::fetch, fetchAll, bindValue
ext/pdo_mysql/, ext/pdo_sqlite/ — drivers (phase 1: sqlite in-memory OK)
Repro (today)
<?php
$pdo = new PDO('sqlite::memory:');
$pdo->exec('CREATE TABLE t (id INTEGER PRIMARY KEY, v TEXT)');
$st = $pdo->prepare('INSERT INTO t (v) VALUES (?)');
$st->execute(['hello']);
foreach ($pdo->query('SELECT v FROM t') as $row) {
echo $row['v'], "\n";
}
./script/docker-exec.sh -- bash -lc 'source script/php-env.sh && php bin/vm.php repro.php'
/usr/bin/php repro.php # Zend: hello
This compiler: compile/runtime error — PDO class / extension missing.
Scope (this repo)
| Module |
Path |
| Extension |
ext/pdo/ (new), optional ext/pdo_sqlite/ |
| OOP classes |
PDO, PDOStatement, PDOException in lib/VM/BuiltinClasses.php or ext |
| VM |
Prepared statements + bound parameters (subset) |
| Tests |
test/compliance/cases/stdlib/pdo_sqlite_memory.phpt |
Done when
Related
Category
stdlibProblem
Database access via
PDO,PDOStatement, and driver DSNs (pdo_mysql,pdo_sqlite, …) is absent. Framework bootstrap code and many examples assumenew PDO($dsn, $user, $pass)with prepared statements.php-src reference
ext/pdo/pdo.c—php_pdo_register_driver, connection lifecycleext/pdo/pdo_dbh.c—PDOmethods (query,prepare,exec, …)ext/pdo/pdo_stmt.c—PDOStatement::fetch,fetchAll,bindValueext/pdo_mysql/,ext/pdo_sqlite/— drivers (phase 1: sqlite in-memory OK)Repro (today)
This compiler: compile/runtime error —
PDOclass / extension missing.Scope (this repo)
ext/pdo/(new), optionalext/pdo_sqlite/PDO,PDOStatement,PDOExceptioninlib/VM/BuiltinClasses.phpor exttest/compliance/cases/stdlib/pdo_sqlite_memory.phptDone when
sqlite::memory:and printshelloPDO::ATTR_ERRMODE+ exceptions on error (Zend default subset)Related
ext/curl(HTTP, not SQL)