使用sqlite3的PHP与PDO一起刷新页面

时间:2014-11-01 00:14:09

标签: php pdo sqlite

我刚刚开始使用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));

1 个答案:

答案 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; - 我无法看到您的网页如何刷新。你需要详细说明。

  • 您发布的问题中没有代码支持页面刷新或重定向。