首页 > 解决方案 > PHP PDO 参数号无效。尽管所有参数都已设置

问题描述

我正在创建一个 PHP 应用程序,它将编译一个计算机列表。该列表将动态生成。因此,我正在尝试将数据插入 MYSQL 数据库。除非发生错误,否则下面的代码并非旨在向用户提供响应。

我收到错误消息:

警告:PDOStatement::execute(): SQLSTATE[HY093]: Invalid parameter number: number of bound variables does not match the number of tokens in C:\xampp\htdocs\netman\connect.php on line 39

我的代码是:

$stmt = $db->prepare("UPDATE bots SET compName=':compName', username=':username',
             ramTotal=':ram', vendor=':vendor', IP=':IP', last=NOW() WHERE machineID = :machID");
            $stmt->execute([
                "machID" => $_GET['machineID'],
                "compName" => $_GET['compName'],
                "username" => $_GET['user'],
                "vendor" => $_GET['vendor'],
                "ram" => $_GET['memory'],
                "IP" => $_SERVER['REMOTE_ADDR']
            ]);

标签: phpmysqlpdoxampp

解决方案


我犯的愚蠢错误:

您不要将绑定变量值放在引号中 compName=:compName – @RaymondNijland

新代码:

$stmt = $db->prepare("UPDATE bots SET compName=:compName, username=:username,
             ramTotal=:ram, vendor=:vendor, IP=:IP, last=NOW() WHERE machineID = :machID");
            $stmt->execute([
                "machID" => $_GET['machineID'],
                "compName" => $_GET['compName'],
                "username" => $_GET['user'],
                "vendor" => $_GET['vendor'],
                "ram" => $_GET['memory'],
                "IP" => $_SERVER['REMOTE_ADDR']
            ]);

谢谢你


推荐阅读