“成功”/“更新”消息取决于操作

时间:2015-04-21 18:34:27

标签: php mysql sql mysqli

我有我的SQL查询:

哎呀,你是对的。这是整个代码:

<?php
//variables here

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);
// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
}

$sql = "INSERT INTO Results (...)
    VALUES (...)
    ON DUPLICATE KEY UPDATE (...)";

if ($conn->query($sql) === TRUE) {
    echo "Saved.";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();
?>

如何显示消息&#34;成功&#34;当插入数据或消息&#34;更新&#34;什么时候更新数据?

1 个答案:

答案 0 :(得分:1)

根据manual,您可以检测是否插入了行或是否修改了行:

  

如果ON DUPLICATE KEY UPDATE,则每行的受影响行值为1   该行将作为新行插入,如果更新现有行,则为2   如果现有行设置为其当前值,则为0。

我已经在PDO中成功使用了它,但我无法确认它是否也适用于msyqli。我很确定会这样。

所以你必须检查$conn->affected_rows的返回值:

if ($conn->query($sql) === TRUE) {
    if ($conn->affected_rows === 1) {
        // new row inserted
    } else {
        // row found and possibly modified, you can filter for 0 or 2
        // if you need more details.
    }
} else {
    ...