在数据库 SQL Server 2016 中添加数据时出错

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


'Fac_ID' 和 'Fac_Name' 的值必须相同,这意味着当我想添加工厂 'F09' 时,Fac_ID 和 Fac_Name 的值必须相同,即 'F09'。


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


" 未捕获的 PDOException: SQLSTATE[HY093]: 参数编号无效:参数未在 C:\xampp\htdocs\ebooking\add_factory.php:24 中定义:#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”


白衣非少年
浏览 167回答 1
1回答

江户川乱折腾

在以下查询中&nbsp;&nbsp;&nbsp;&nbsp;$sql&nbsp;=&nbsp;"INSERT&nbsp;INTO&nbsp;factory(Fac_Name,&nbsp;Fac_ID)&nbsp;VALUES(:Fac_Name,&nbsp;:Fac_Name)";您正在使用 :Fac_Name 两次,您应该使用以下内容&nbsp;&nbsp;&nbsp;&nbsp;$sql&nbsp;=&nbsp;"INSERT&nbsp;INTO&nbsp;factory(Fac_Name,&nbsp;Fac_ID)&nbsp;VALUES(:Fac_Name,&nbsp;:Fac_ID)";如果您需要为 name 和 id 设置相同的值,您应该省略以下行&nbsp;&nbsp;&nbsp;&nbsp;$query->bindParam(':Fac_ID',&nbsp;$Fac_ID,);因为您正在尝试将数据绑定到查询中不存在的参数在您的情况下,以下陈述就足够了&nbsp;&nbsp;&nbsp;&nbsp;$query->bindParam(':Fac_Name',&nbsp;$Fac_ID,);
打开App,查看更多内容
随时随地看视频慕课网APP