【问题标题】:Why deos PDO SELECT Work but BASIC INSERT fails?为什么 PDO SELECT 工作但 BASIC INSERT 失败?
【发布时间】:2022-12-03 02:29:21
【问题描述】:

我已连接到数据库并能够更新记录。 我有一个名为“action”的变量,它可以是“update”或“add”。

我在 switch 语句中使用它来将我的查询设置为“SELECT”或“INSERT”。

选择语句有效。 INSERT 语句没有。

我在 $pdo->execute($data) 上得到这个错误。

PHP Fatal error:  Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter was not defined in ...

PDOStatement->execute(Array)

该错误由 PDOStatement 抛出

这是我尝试过的方法,看起来很简单,但我正在为此苦苦挣扎。

$data = [
    'firstName'=> $firstName,
    'lastName'=> $lastName,
    'badge'=> $badge,
    'department'=> $department,
    'image'=> $image,
    'active'=> $active,
    'stars'=> $stars,
    'email'=> $email,
    'primary_key'=> $primaryKey,
    ];

$sql = "INSERT INTO `team`
(`primary_key`,`firstName`, `lastName`, `badge`, `department`,  `image`, `active`, `stars`, `email`)
VALUES
(NULL, :firstName, :lastName, :badge, :department, :image, :active, :stars, :email)";


$pdo->prepare($sql);
$pdo->execute($data);   <- error is here 

当我简单地回显我的 $data 数组以查看是否有奇怪的东西时。我没有看到任何基于所有站点的内容,我已经阅读过。

//$data array DATA

primary_key =   
firstName = test
lastName = test
badge = 9000
department = marketing
image = 9000.jpg
active = 1
stars = 0
email = tester@test.com

db中的primary_key是自增的 primary_key 是 $_post[] 更新查询和 NULL 插入查询(自动递增 db 列)

您可以看到任何会阻止此 INSERT 查询工作的错误吗?我卡住了。我知道数组有 9 个变量,有 9 个要插入的字段,并列出了 9 个值。

【问题讨论】:

    标签: php pdo


    【解决方案1】:

    我知道数组有 9 个变量,有 9 个要插入的字段,并列出了 9 个值。

    计算参数。其中有 8 个。该数组包含一个名为 primary_key 的值,查询中没有针对该值的参数。

    db中的primary_key是自增的

    然后不要为其插入值:

    $sql = "INSERT INTO `team`
    (`firstName`, `lastName`, `badge`, `department`,  `image`, `active`, `stars`, `email`)
    VALUES
    (:firstName, :lastName, :badge, :department, :image, :active, :stars, :email)";
    

    并从 $data 数组中删除 primary_key

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2017-09-04
      • 1970-01-01
      • 1970-01-01
      • 2016-09-02
      • 2021-10-29
      相关资源
      最近更新 更多