PDO中未捕获的异常

问题描述 投票:2回答:2

执行以下代码时出现此错误:

Fatal error: Uncaught exception 'PDOException' with message
  'SQLSTATE[42000]: Syntax error or access violation: 1065 Query was empty'
  in /home/content/63/6563663/html/inventory/pg.php:20
Stack trace:
  #0 /home/content/63/6563663/html/inventory/pg.php(20): PDOStatement->execute()
  #1 {main} thrown in /home/content/63/6563663/html/inventory/pg.php on line 20
<?php
    $u = $_GET["u"];

    if ((isset($_POST["MM_update"])) && ($_POST["MM_update"] == "form2")) {
        $amount = isset($_POST['amount']) ? $_POST['amount'] : null;

        if (null != $amount) {
            $user = 'username';
            $pass = 'password';
            $pdo = new PDO('mysql:host=localhost', $user, $pass);
            $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
            session_start();
            $tablename = $_SESSION['MM_Username'];
            $query = sprintf("UPDATE `%s` SET `stock` = :amount WHERE `itemname` = :u ", $tablename);
            $stmt = $pdo->prepare($query);
            $stmt->bindParam('amount', $amount);
            $stmt->execute();
        }
    }
?>

它有效,但现在出现此错误:

Fatal error: Uncaught exception 'PDOException' with message
  'SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match number of tokens'
  in /home/content/63/6563663/html/inventory/pg.php:20
Stack trace:
  #0 /home/content/63/6563663/html/inventory/pg.php(20): PDOStatement->execute()
  #1 {main} thrown in /home/content/63/6563663/html/inventory/pg.php on line 20
php sql mysql pdo mysql-error-1065
2个回答
2
投票
您可能应该熟悉try ing和catch ing Exceptions

1
投票
嗯,错误消息很清楚:
© www.soinside.com 2019 - 2024. All rights reserved.