【问题标题】:Error while add data in database SQL Server 2016 [closed]在数据库 SQL Server 2016 中添加数据时出错 [关闭]
【发布时间】:2019-08-17 01:30:00
【问题描述】:

目前,我的数据库中有一个名为“工厂”的表。在此表中,有两列,“Fac_ID”和“Fac_Name”。现在,我想创建一个函数来向表“工厂”添加一些新工厂。

'Fac_ID'和'Fac_Name'的值必须相同,也就是说当我要添加工厂'F09'时,Fac_ID和Fac_Name的值必须相同,即'F09'。

我以前连接MYSQL数据库(PDO)时,添加成功。但是当我更改为 MSSQL (PDO) 时,

" Uncaught PDOException: SQLSTATE[HY093]: Invalid parameter number: parameter is not defined in C:\xampp\htdocs\ebooking\add_factory.php:24 Stack trace: #0 C:\xampp\htdocs\ebooking\add_factory .php(24): PDOStatement->bindParam(':Fac_ID', 'F11')"

这是我的 add_factory.php 代码

<?php

require_once "configPDO.php";

if(isset($_POST['Submit'])) {   
$Fac_ID = $_POST['Fac_ID'];

// checking empty fields
if(empty($Fac_ID)) {

    if(empty($Fac_ID)) {
        echo "<font color='red'>Name field is empty.</font><br/>";
    }
    //link to the previous page
    echo "<br/><a href='javascript:self.history.back();'>Go Back</a>";
} else { 
    // if all the fields are filled (not empty) 

    //insert data to database       
    $sql = "INSERT INTO factory(Fac_Name, Fac_ID) VALUES(:Fac_Name, :Fac_Name)";
    $query = $conn->prepare($sql);

    $query->bindParam(':Fac_Name', $Fac_ID,);
    $query->bindParam(':Fac_ID', $Fac_ID,);
    $query->execute();


    //display success message
    header("Location:factory.php");
  }
 }

?>

这是我的 configPDO.php

<?php

$servername = 'xxx.xx.xx.xxx';
$username = 'xx';
$password = 'xxxxxx';
$dbname = 'xxxx';

try {
$conn = new PDO("sqlsrv:Server=$servername;Database=$dbname", $username, $password);
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

}
catch(PDOException $error) {
$error->getMessage();
}
?> 

我能知道是什么问题吗?在 HTML 中添加工厂的输入是 'Fac_ID'

【问题讨论】:

  • 在您的查询中,您有 VALUES(:Fac_Name, :Fac_Name) 而不是 VALUES(:Fac_Name, :Fac_ID)
  • 因为像我的问题一样,我希望 Fac_ID 和 Fac_Name 具有相同的值
  • 没关系,但您正在尝试绑定到参数:Fac_ID,而您的查询中不存在该参数。因此你得到的错误。

标签: php sql-server pdo


【解决方案1】:

在下面的查询中

    $sql = "INSERT INTO factory(Fac_Name, Fac_ID) VALUES(:Fac_Name, :Fac_Name)";

您使用 :Fac_Name 两次,而不是使用以下

    $sql = "INSERT INTO factory(Fac_Name, Fac_ID) VALUES(:Fac_Name, :Fac_ID)";

如果您需要为 name 和 id 设置相同的值,则应省略以下行

    $query->bindParam(':Fac_ID', $Fac_ID,);

因为您尝试将数据绑定到查询中不存在的参数

以下陈述在您的情况下就足够了

    $query->bindParam(':Fac_Name', $Fac_ID,); 

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2023-03-10
    • 1970-01-01
    • 2021-07-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多