相关疑难解决方法(0)

准备好的语句句柄可以存储在成员变量中吗?

我有一个PHP类来处理数据并将其存储在MySQL数据库中.我在保存数据时出于安全原因通过PDO使用预准备语句,但由于类很大,这些预处理语句是在对象生命周期内被调用数千次的不同函数内创建的(从1分钟到30分钟).

我想知道的是,如果有任何原因我无法在类构造函数中准备语句并将句柄保存在成员变量中以避免语句被多次准备.

有什么理由不行吗?我不明白为什么不这样做,但我以前从未见过它,这让我想知道出于某种原因这样做是不是很糟糕.


IE是这样的:

Class MyClass {

    private stmt1;

    function __construct($dbh) {
        $this->stmt1 = $dbh->prepare('SELECT foo FROM bar WHERE foobar = :foobar');
    }

    private function doFoo() {
        $this->stmt1->execute(...)
        ...
    }
}
Run Code Online (Sandbox Code Playgroud)

php mysql pdo

4
推荐指数
1
解决办法
536
查看次数

使用PDO准备SQL语句

我的代码看起来像这样:

// Connect to SQLite DB
DB('/path/to/sqlite.db');

DB('BEGIN TRANSACTION;');

// These loops are just examples.
for ($i = 1; $i <= 10000; $i++)
{
    for ($j = 1; $j <= 100; $j++)
    {
        DB('INSERT INTO "test" ("id", "name") VALUES (?, ?);', $i, 'Testing ' . $j);
    }
}

DB('END TRANSACTION;');
Run Code Online (Sandbox Code Playgroud)

这是DB()函数:

function DB($query)
{
    static $db = null;

    if (is_file($query) === true)
    {
        $db = new PDO('sqlite:' . $query, null, null, array(PDO::ATTR_ERRMODE => PDO::ERRMODE_WARNING));
    }

    else if (is_a($db, 'PDO') === …
Run Code Online (Sandbox Code Playgroud)

php database sqlite pdo

2
推荐指数
1
解决办法
2053
查看次数

标签 统计

pdo ×2

php ×2

database ×1

mysql ×1

sqlite ×1