【问题标题】:Unable to prepare statement in SQLite无法在 SQLite 中准备语句
【发布时间】:2014-02-25 09:33:24
【问题描述】:

下面的代码有什么问题?

( !) 警告:SQLite3::prepare() [sqlite3.prepare]: Unable to prepare statement: 1, near ":DB_NAME": 在线 C:\xampp\htdocs\memo\DB.php 中的语法错误91

调用栈

#时间记忆函数位置

1 1.0436 335032 {main}( ) ..\memo.php:0

2 1.0471 370312 备忘录->__construct( ) ..\memo.php:22

3 1.0524 371112 DB->addRow( ) ..\memo.php:17

4 1.0524 371240 准备 ( ) ..\DB.php

/**
 * Add row to DB table.
 * @return bool
 */
public function addRow($idVal, $titleStr, $contentStr){
    $query = "INSERT INTO :DB_NAME VALUES(:ID, :Title, :Content);";
    $stmt = $this->db->prepare($query);
    $stmt->bindValue(":DB_NAME", DB::DB_NAME);
    $stmt->bindValue(':id', $idVal, SQLITE3_INTEGER);
    $stmt->bindValue(":Title", $titleStr, SQLITE3_TEXT);
    $stmt->bindValue(":Content", $contentStr, SQLITE3_TEXT);

    return $stmt->execute();
}

【问题讨论】:

    标签: php sqlite


    【解决方案1】:

    您不能在准备好的语句中使用表名或列名作为占位符。您只能绑定值。

    像这样使用它:

    $query = "INSERT INTO ". DB::DB_NAME ." VALUES(:ID, :Title, :Content);";
    

    【讨论】:

    • 天哪!这真的很可悲。我希望我可以使用它。感谢您的帮助:)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2021-02-01
    • 2016-10-15
    • 2021-04-26
    • 1970-01-01
    • 1970-01-01
    • 2018-03-14
    • 2020-05-04
    相关资源
    最近更新 更多