PHP准备语句处理重复条目

PHP准备语句处理重复条目,php,mysql,mysqli,error-handling,prepared-statement,Php,Mysql,Mysqli,Error Handling,Prepared Statement,我有一个问题,我不能用准备好的语句处理重复条目 我想在出现重复条目时结束程序。这就是我一直试图做的: function insert_vulnerability ($CVE, $Description, $Date, $Score, $Type){ $conn = connection(); $stmt = $conn->prepare("INSERT INTO Vulnerabilities (CVE, Description, Date, Score, Type)

我有一个问题,我不能用准备好的语句处理重复条目

我想在出现重复条目时结束程序。这就是我一直试图做的:

function insert_vulnerability ($CVE, $Description, $Date, $Score, $Type){


    $conn = connection();

    $stmt = $conn->prepare("INSERT INTO Vulnerabilities (CVE, Description, Date, Score, Type)
                           VALUES (?, ?, ?, ?, ?)");




    $stmt->bind_param("sssis", $CVE, $Description, $Date, $Score, $Type);

    if ( false === $stmt ) {

       die('prepare() failed: ' . htmlspecialchars($mysqli->error));

    }


    $stmt->execute();

    $conn->close();


}
当不使用预先准备好的语句时,我以这种方式处理了错误,一切都很顺利:

function insert_vulnerability ($CVE, $Description, $Date, $Score, $Type){


    $conn = connection();

    $Description = htmlspecialchars($Description);



    $sql = "INSERT INTO Vulnerabilities (CVE, Description, Date, Score, Type)
    VALUES ('".$CVE."', '".$Description."', '".$Date."', '".$Score."', '".$Type."')";

    if ($conn->query($sql) === TRUE) {
        //echo "New record created successfully";
    } else {
        echo "Error: " . $sql . "<br>" . $conn->error;
        $conn->close();
        die();

    }

    $conn->close();

}
函数插入\u漏洞($CVE、$Description、$Date、$Score、$Type){
$conn=连接();
$Description=htmlspecialchars($Description);
$sql=“插入漏洞(CVE、描述、日期、分数、类型)
值(“$CVE.”、“$Description.”、“$Date.”、“$Score.”、“$Type.”);
if($conn->query($sql)==TRUE){
//echo“新记录创建成功”;
}否则{
echo“Error:”.$sql.“
”$conn->Error; $conn->close(); 模具(); } $conn->close(); }
那么,我如何用准备好的语句获得相同的结果呢


提前谢谢。

您可以连接
$stmt->execute()
中的检查,查看准备好的语句是否正常工作

function insert_vulnerability ($CVE, $Description, $Date, $Score, $Type){
    $conn = connection();

    $stmt = $conn->prepare('
        INSERT INTO Vulnerabilities (CVE, Description, Date, Score, Type)
        VALUES (?, ?, ?, ?, ?)
    ');

    $stmt->bind_param('sssis', $CVE, $Description, $Date, $Score, $Type);
    if($stmt->execute()) { // true, success, else error
        echo 'New record created successfully';
    } else {
        echo $conn->error;
    }

    $conn->close();
}
请注意,在准备好的语句端有一个未定义的变量:

$mysqli->error

那你有什么问题?你的题目是关于重复的,现在你问的是错误处理。@u\u mulder你说得对,我的错。