我刚刚开始使用sqlite3,我的页面不断刷新,并继续将数据插入数据库。如果我注释掉insert execute命令,页面就不会刷新。我在想它可能与我与数据库的连接有关,但我不确定。提前致谢。这是完整的代码:
<?php
class create {
function makeDB() {
$pdo = new PDO("sqlite:db/SSDB");
$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$mainDB = "CREATE TABLE IF NOT EXISTS pass (
'rowID' INTEGER,
'username' CHAR(256) NOT NULL,
'pass' CHAR(256) NOT NULL,
'iv' CHAR(256) NOT NULL
)";
$pdo->query($mainDB);
}
}
class connectDB {
public function connect() {
try {
$dbh = new PDO("sqlite:db/SSDB");
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
return $dbh;
} catch (PDOException $ex) {
echo $ex->getMessage();
die();
}
}
}
$connDb = new connectDB();
$conn = $connDb->connect();
$createDB = new create();
$createDB->makeDB();
$string = "hi1";
$salt = 'salt';
$encrypted_string = 'test';
$iv = 4;
$sql = "INSERT INTO pass VALUES(1,:encrypted,:salt,:iv)";
$sqlPrepare = $conn->prepare($sql);
$sqlPrepare->execute(array(':encrypted' => $encrypted_string, ':salt' => $salt,:iv'=> $iv));
答案 0 :(得分:1)
根据您编辑的originally posted code/question并覆盖而不将其标记为编辑,如果有人看到此问题并询问为什么答案具有相同的刻度/引用修复:
首先,您在表创建代码中为列使用(单个)引号。
使用反引号或删除引号。
$mainDB = "CREATE TABLE IF NOT EXISTS `pass` (
`rowID` INTEGER,
`username` CHAR(256) NOT NULL,
`pass` CHAR(256) NOT NULL,
`iv` CHAR(256) NOT NULL
)";
您还错过了$salt,:iv'
=&gt;的报价$salt,':iv'
<击>
在打开连接后立即添加$pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
以查找原始代码应该抛出的错误。
或者,$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
取决于您使用的那个。
击>
至于&#34;我的页面在我身上不断刷新&#34; - 我无法看到您的网页如何刷新。你需要详细说明。