【问题标题】:PHP Prepared Statements handle duplicate entryPHP Prepared Statements 处理重复条目
【发布时间】:2015-07-14 22:14:34
【问题描述】:

我有一个问题,我无法使用准备好的语句处理重复条目。

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

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_mulder 你是对的,我的错。

标签: php mysql mysqli error-handling prepared-statement


【解决方案1】:

您可以在$stmt-&gt;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

【讨论】:

    猜你喜欢
    • 2014-03-29
    • 1970-01-01
    • 2012-08-23
    • 1970-01-01
    • 2012-10-04
    • 1970-01-01
    • 1970-01-01
    • 2013-08-25
    • 1970-01-01
    相关资源
    最近更新 更多