darkterminal / libsql-php-ext
该包已被废弃且不再维护。没有建议的替代包。
PHP 的 LibSQL 本地扩展
v1.0.1
2024-05-19 05:14 UTC
Requires
- php: >=8.3
This package is auto-updated.
Last update: 2024-07-12 21:11:36 UTC
README
此存储库不再维护,并已迁移至
官方 Turso 数据库 存储库下的 Turso 客户端 PHP
PHP 的 LibSQL 扩展
LibSQL 客户端 PHP 的核心依赖
要求
- Linux 或 Darwin OS
- C/C++ 编译器
- jq
- Rust 已安装
- PHP 已安装
- FFI 扩展已启用(原因:我已从包装器读取 C 头定义)
🚨 不要担心要求 🚨
安装此扩展时,一切都会准备好。但如果遇到错误,请创建一个问题。
如何尝试?
安装
composer require darkterminal/libsql-php-ext
💡 使用示例和可用功能
<?php use Darkterminal\LibSQLPHPExtension\LibSQLPHP; require_once 'vendor/autoload.php'; $db = new LibSQLPHP("file:database.db"); if ($db->is_connected()) { echo $db->version() . PHP_EOL; } $db->close(); // Always close the database connection
执行
$db->exec("CREATE TABLE users (id INTEGER PRIMARY KEY AUTOINCREMENT, name TEXT)"); $db->exec("INSERT INTO users (name) VALUES ('Handoko')"); $db->exec("INSERT INTO users (name) VALUES ('Karlina')");
执行批量操作
方便地运行多个 SQL 语句(不能接受任何参数)的方法。
$db->execute_batch(" BEGIN; CREATE TABLE foo(x INTEGER); CREATE TABLE bar(y TEXT); COMMIT; ");
获取最后一个插入 ID
var_dump($db->last_insert_rowid());
查询数据库
$result = $db->query("SELECT * FROM users LIMIT 5");
以原始格式返回
echo "Return as raw:" . PHP_EOL; var_dump($result->fetchRaw()); // Result // array(2) { // ["columns"]=> // array(2) { // ["name"]=> // string(4) "Text" // ["id"]=> // string(7) "Integer" // } // ["rows"]=> // array(5) { // [0]=> // array(2) { // [0]=> // string(5) "Randi" // [1]=> // int(1) // } // [1]=> // array(2) { // [0]=> // string(4) "Ando" // [1]=> // int(2) // } // [2]=> // array(2) { // [0]=> // string(4) "Danu" // [1]=> // int(3) // } // [3]=> // array(2) { // [0]=> // string(10) "Rani Karni" // [1]=> // int(4) // } // [4]=> // array(2) { // [0]=> // string(6) "Rumana" // [1]=> // int(5) // } // } // }
获取结果
获取结果行作为关联数组、数字索引数组或两者都有的形式,如 SQLite3。默认为 LIBSQLPHP_BOTH
,其他选项为:LIBSQLPHP_ASSOC
或 LIBSQLPHP_NUM
获取默认值
echo "Return as default (LIBSQLPHP_BOTH):" . PHP_EOL; $users = $result->fetchArray(); var_dump($users); // array(5) { // [0]=> // array(4) { // ["id"]=> // int(1) // [0]=> // int(1) // ["name"]=> // string(5) "Randi" // [1]=> // string(5) "Randi" // } // [1]=> // array(4) { // ["id"]=> // int(2) // [0]=> // int(2) // ["name"]=> // string(4) "Ando" // [1]=> // string(4) "Ando" // } // [2]=> // array(4) { // ["id"]=> // int(3) // [0]=> // int(3) // ["name"]=> // string(4) "Danu" // [1]=> // string(4) "Danu" // } // [3]=> // array(4) { // ["id"]=> // int(4) // [0]=> // int(4) // ["name"]=> // string(10) "Rani Karni" // [1]=> // string(10) "Rani Karni" // } // [4]=> // array(4) { // ["id"]=> // int(5) // [0]=> // int(5) // ["name"]=> // string(6) "Rumana" // [1]=> // string(6) "Rumana" // } // }
获取关联
echo "Return as default (LIBSQLPHP_ASSOC):" . PHP_EOL; $users = $result->fetchArray(LIBSQLPHP_ASSOC); var_dump($users); // array(5) { // [0]=> // array(2) { // ["id"]=> // int(1) // ["name"]=> // string(5) "Randi" // } // [1]=> // array(2) { // ["id"]=> // int(2) // ["name"]=> // string(4) "Ando" // } // [2]=> // array(2) { // ["id"]=> // int(3) // ["name"]=> // string(4) "Danu" // } // [3]=> // array(2) { // ["id"]=> // int(4) // ["name"]=> // string(10) "Rani Karni" // } // [4]=> // array(2) { // ["id"]=> // int(5) // ["name"]=> // string(6) "Rumana" // } // }
获取数字
echo "Return as default (LIBSQLPHP_NUM):" . PHP_EOL; $users = $result->fetchArray(LIBSQLPHP_NUM); var_dump($users); // array(5) { // [0]=> // array(2) { // [0]=> // string(5) "Randi" // [1]=> // int(1) // } // [1]=> // array(2) { // [0]=> // string(4) "Ando" // [1]=> // int(2) // } // [2]=> // array(2) { // [0]=> // string(4) "Danu" // [1]=> // int(3) // } // [3]=> // array(2) { // [0]=> // string(10) "Rani Karni" // [1]=> // int(4) // } // [4]=> // array(2) { // [0]=> // string(6) "Rumana" // [1]=> // int(5) // } // }
查询单个
$result = $db->querySingle("SELECT name FROM users WHERE id = 1"); $result2 = $db->querySingle("SELECT name FROM users WHERE id = 2", true); var_dump($result); // string(5) "Randi" var_dump($result2); // array(1) { // ["name"]=> // string(4) "Ando" // }
获取总列数
echo "Return the column count:" . PHP_EOL; var_dump($result->numColumns());
获取列名
echo "Return the column names:" . PHP_EOL; var_dump($result->columName());
获取列类型
echo "Return the column types:" . PHP_EOL; var_dump($result->columnType());
参数绑定
bindParam
$stmt = $db->prepare("INSERT INTO persons (name, age) VALUES (:name, @age)"); // Bind parameters $stmt->bindParam(':name', $baz, LIBSQLPHP_TEXT); $stmt->bindParam('@age', $foo, LIBSQLPHP_INTEGER); $baz = "Sarah"; $foo = 22; $stmt->execute();
bindValue
$stmt = $db->prepare('INSERT INTO foo VALUES (?)'); $age = 18; $stmt->bindValue(1, $age, LIBSQLPHP_INTEGER); $stmt->execute();
准备查询有什么?
prepare
查询返回一个包含其他方法的 LibSQLPHPStmt
对象。
bindParam
- 将 PHP 变量绑定到预处理语句中的参数。bindValue
- 将值绑定到预处理语句中的参数。execute
- 执行带有绑定参数的预处理语句。getSQL
- 获取用参数值替换的 SQL 查询字符串。paramCount
- 获取预处理语句中的参数数量。readOnly
- 检查预处理语句是否为只读。reset
- 重置预处理语句,清除绑定的参数。clear
- 清除预处理语句中绑定的参数的值。close
- 关闭预处理语句,释放资源。
事务
$operations_successful = false; $tx = $db->transaction(TransactionBehavior::Deferred); $tx->exec("INSERT INTO users (name) VALUES (?)", ["Emanuel"]); $tx->exec("INSERT INTO users (name) VALUES (?)", ["Darren"]); if ($operations_successful) { $tx->commit(); echo "Commit the changes" . PHP_EOL; } else { $tx->rollback(); echo "Rollback the changes" . PHP_EOL; }
注意:在
commit
或rollback
之后,$tx
将从内存中释放。
如果此库对您有用,并希望支持我的工作,请为您所信的上帝祈祷,愿您和我永远健康、生活幸福,或者您也可以成为我的 GitHub 赞助者。
Regard,
.darkterminal
(Software Freestyle Engineer - 🇮🇩)