踩坑备忘,在浏览器浏览网页时,页面编译就先执行一次,然后再显示时又执行了一次

踩坑备忘,在浏览器浏览网页时,页面编译就先执行一次,然后再显示时又执行了一次,这样不管怎么浏览网页,后台先执行了一次,数据就插入了,然后页面显示又执行了一次,就会提示邮箱已经存在了。无语。

<!DOCTYPE html>

<html lang="en">

<head>

<meta charset="UTF-8">

<title>Title</title>

</head>

<body>

<?php

try {

$db = new SQLite3('test.db');

if (!$db) {

throw new Exception("数据库连接失败:" . $db->lastErrorMsg());

}

echo "✅ 数据库连接成功<br>";

// 创建表(代码不变)

$createTableSql = "

CREATE TABLE IF NOT EXISTS users (

id INTEGER PRIMARY KEY AUTOINCREMENT,

name TEXT NOT NULL,

age INTEGER,

email TEXT UNIQUE,

create_time DATETIME DEFAULT CURRENT_TIMESTAMP

);

";

$result = $db->exec($createTableSql);

if ($result) {

echo "✅ 数据表创建/验证成功<br>";

} else {

throw new Exception("创建表失败:" . $db->lastErrorMsg());

}

// 要插入的数据

$name = "张三4";

$age = 254;

$email = "zhangsan@1233444example.com";

// 关键:先查询邮箱是否已存在

$checkStmt = $db->prepare("SELECT id FROM users WHERE email = :email");

$checkStmt->bindValue(':email', $email, SQLITE3_TEXT);

$checkResult = $checkStmt->execute();

$existingRow = $checkResult->fetchArray(SQLITE3_ASSOC);

if ($existingRow) {

echo "ℹ️ 邮箱 {$email} 已存在,无需重复插入(ID:{$existingRow['id']})<br>";

} else {

// 邮箱不存在,执行插入

$insertStmt = $db->prepare("INSERT INTO users (name, age, email) VALUES (:name, :age, :email)");

$insertStmt->bindValue(':name', $name, SQLITE3_TEXT);

$insertStmt->bindValue(':age', $age, SQLITE3_INTEGER);

$insertStmt->bindValue(':email', $email, SQLITE3_TEXT);

$insertResult = $insertStmt->execute();

if ($insertResult) {

$insertId = $db->lastInsertRowID();

echo "✅ 插入数据成功,ID:{$insertId}<br>";

} else {

throw new Exception("插入数据失败:" . $db->lastErrorMsg());

}

}

// 后续查询、更新等代码不变...

$querySql = "SELECT * FROM users WHERE age >= 20";

$result = $db->query($querySql);

echo "���� 查询结果:<br>";

while ($row = $result->fetchArray(SQLITE3_ASSOC)) {

echo "ID:{$row['id']},姓名:{$row['name']},年龄:{$row['age']},邮箱:{$row['email']}<br>";

}

} catch (Exception $e) {

echo "❌ 操作失败:" . $e->getMessage() . "<br>";

} finally {

if (isset($db) && $db) {

$db->close();

echo "���� 数据库连接已关闭<br>";

}

}

?>

</body>

</html>

文件名精灵2025年最新版 机器翻译 AI智能
...
批量修改文件名称、文件夹名称

免费使用 功能无限制

全面接入机器自动翻译功能,主流AI大模型智能改名

方便快捷,支持正则表达式、无需安装功能齐全、支持定制无广告、无插件,放心使用。

免费下载
本站中所有的计算器的计算结果仅供参考,本站对此结果的准确性不承担任何责任,实际数额以银行/保险公司/国家相关机构确认的结果为准。
在线客服QQ:543690914,备案号: 苏ICP备15037649号-27。东海县白塔埠镇佳诚电脑经营部版权所有。