【问题标题】:PHP PDO error while adding to the base添加到基础时出现 PHP PDO 错误
【发布时间】:2016-07-01 19:24:01
【问题描述】:

我在应该工作 PHP PDO 命令的函数中发送变量,该变量实际上存在(我检查它)但是在 PDO 中,我得到错误。

函数如下:

public static function addMenu( $name ){
    $db = ConnectDB();

    var_dump($name); echo '<br />';

    $sql = "INSERT INTO " . self::getTableName() . " name VALUES :nameMenu";
    $stmt = $db->prepare ( $sql );
    $stmt->bindParam(':nameMenu', $name, PDO::PARAM_STR);
    $stmt->execute();
}

这里是我得到的错误:

string(4) "rher"

致命错误:未捕获的异常“PDOException” 带有消息'SQLSTATE [42000]:语法错误或访问冲突:1064 您的 SQL 语法有错误;检查手册 对应于您的 MySQL 服务器版本,以便使用正确的语法 在第 1 行的 'name VALUES 'rher'' 附近 C:\xampp\htdocs\sea\public_html\admin\backend\DB\tables\TypePlacesTable.php:30 堆栈跟踪: C:\xampp\htdocs\sea\public_html\admin\backend\DB\tables\TypePlacesTable.php(30): PDOStatement->执行() C:\xampp\htdocs\sea\public_html\admin\backend\index.php(18): TypePlacesTable::addMenu('rher') {main} 抛出 C:\xampp\htdocs\sea\public_html\admin\backend\DB\tables\TypePlacesTable.php 上线30

【问题讨论】:

  • 不确定它是否需要,但尝试将() 放在列名周围,() 放在命名参数周围可能是必要的。例如$sql = "INSERT INTO " . self::getTableName() . " (`name`) VALUES (:nameMenu)"; 之前没试过没有 ()
  • 同样,每当调试与 sql 有关的错误时,您应该echo $sql 并将其直接粘贴到数据库中以查看是否存在任何问题。供将来参考:)

标签: php pdo


【解决方案1】:

哦,现在工作,我只是忘记为变量添加“(”和“)”,需要这样

public static function addMenu( $name ){
        $db = ConnectDB();
        $sql = "INSERT INTO " . self::getTableName() . " (name) VALUES (:nameMenu)";
        $stmt = $db->prepare ( $sql );
        $stmt->bindParam(':nameMenu', $name, PDO::PARAM_STR);
        $stmt->execute();
    }

【讨论】:

    猜你喜欢
    • 2014-11-26
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2012-11-27
    • 1970-01-01
    • 2017-06-18
    • 2014-06-10
    • 2017-02-07
    相关资源
    最近更新 更多