深色模式
数据库
在热铁盒网页托管,我们提供了 KV 数据库,您可以通过云函数来读写它。
创建数据库
您可以使用云函数内置的 Database 类来创建或打开一个数据库实例,只需传入数据库的名称作为参数即可。一个网站可以创建多个数据库,创建的数据库只能被当前网站访问。
php
<?php
$db = new Database("database_name");js
const db = new Database("database_name");命名规则
数据库和键的名称只能包含字母、数字、下划线 _ 和连字符 -,且区分大小写。
读取数据
您可以使用 get 方法读取指定键的数据。
php
<?php
$db = new Database("database_name");
$data = db->get("key_name");
echo $data;js
// 在 Node.js 中,`get` 方法是异步的,因此需要使用 `await` 关键字。
// 我们建议将其放在异步函数中,但如果您想在顶层使用,也可以使用 `.then()`。
async function main() {
const db = new Database("database_name");
const data = await db.get("key_name");
document.write(data);
}
main();写入数据
您可以使用 set 方法写入指定键的值。写入的值只能是字符串类型,长度不超过 65535 个字符。如需存储其他数据类型,您可以先将其转为字符串。
php
<?php
$db = new Database("database_name");
$db->set("key_name", "value");js
const db = new Database("database_name");
db.set("key_name", "value");写入和删除等修改数据库的操作是同步的,不需要 await。
删除数据
您可以使用 delete 方法删除指定键的值。
php
<?php
$db = new Database("database_name");
$db->delete("key_name");js
const db = new Database("database_name");
db.delete("key_name");列出所有键
您可以使用 listKeys 方法获取数据库中的所有键名。该方法返回一个键名数组。
php
<?php
$db = new Database("database_name");
$keys = $db->list_keys();
echo implode("<br>", $keys);js
async function main() {
const db = new Database("database_name");
const keys = await db.listKeys();
document.write(keys);
}
main();数组
set 方法会覆盖指定键已有的值。如果你想在同一个键里放多个值,可以用 push 方法把新值加进去。使用 getArray 方法可以读取这个键下的所有值,返回一个数组。
如果您想删除数组中的某个值,可以使用 delete(key, value) 方法。
请注意
数组的读写效率不如单个值,请优先使用单个值存储,不要滥用数组。
php
<?php
$db = new Database("database_name");
$db->push("key_name", "value1");
$db->push("key_name", "value2");
echo "添加两个值后:<br>";
$values = $db->get_array("key_name");
echo implode("<br>", $values);
echo "<br>";
$db->delete("key_name", "value1");
echo "删除 value1 后:<br>";
$values = $db->get_array("key_name");
echo implode("<br>", $values);
$db->delete("key_name"); // 删除整个数组js
async function main() {
const db = new Database("database_name");
db.push("key_name", "value1");
db.push("key_name", "value2");
document.write("添加两个值后:<br>");
let values = await db.getArray("key_name");
document.write(values);
document.write("<br>");
db.delete("key_name", "value1");
document.write("删除 value1 后:<br>");
values = await db.getArray("key_name");
document.write(values);
db.delete("key_name"); // 删除整个数组
}
main();完整示例
以下是一个简单的示例,演示如何使用 KV 数据库统计每个名字访问的次数。
php
<?php
$db = new Database("visits");
if (isset($_GET["name"])) {
$name = $_GET["name"]; // 从网址参数中获取名字
$count = 0;
$data = $db->get($name); // 读取数据库
if ($data !== null) {
$count = intval($data); // 将数据库里存的字符串转换为数字
}
$count++; // 访问次数加 1
$db->set($name, strval($count)); // 写入数据库
}
?>
<!DOCTYPE html>
<html>
<head>
<title>统计</title>
</head>
<body>
<?php
if (isset($_GET["name"])) {
echo "<p>欢迎," . htmlspecialchars($name) . "!您访问了本站 $count 次。</p>";
}
?>
<form>
<label for="name">名字:</label>
<input type="text" id="name" name="name">
<input type="submit" />
</form>
</body>
</html>js
async function main() {
const db = new Database("visits");
const visitor = req.query.name; // 从网址参数中获取名字
let count = 0;
if (visitor) {
const data = await db.get(visitor); // 读取数据库
if (data) {
count = parseInt(data); // 将数据库里存的字符串转换为数字
}
count++; // 访问次数加 1
db.set(visitor, count.toString()); // 写入数据库
}
document.write(`
<!DOCTYPE html>
<html>
<head>
<title>统计</title>
</head>
<body>
${visitor ? `<p>欢迎,${visitor}!您访问了本站 ${count} 次。</p>` : ""}
<form>
<label for="name">名字:</label>
<input type="text" id="name" name="name">
<input type="submit" />
</form>
</body>
</html>
`);
}
main();第三方 SQL 数据库
热铁盒网页托管的 PHP 支持连接到第三方 SQL 数据库,例如阿里云 RDS。如果您在第三方平台上创建数据库并打算在热铁盒网页托管中调用,建议选择位于美国西部的数据库实例以获得最低的网络延迟。