如果存在则更新行

时间:2017-01-08 14:53:19

标签: php mysql

在我的PHP脚本中,我将数据保存到数据库(hash,sala)。 如果sala存在,我想更新散列(在同一行中更新散列)。

如何更改我的脚本?

$sala = $_POST['sala'];

$servername = "";
$username = "";
$password = "";
$dbname = "";

// Create connection
$conn = new mysqli($servername, $username, $password, $dbname);

// Check connection
if ($conn->connect_error) {
    die("Connection failed: " . $conn->connect_error);
} else{
    echo "Polaczono";
}

$sql = "INSERT INTO instructions (hash, sala)
VALUES ('$newfilename', '$sala')";

if ($conn->query($sql) === TRUE) {
    echo "Dane dodano prawidłowo";
} else {
    echo "Error: " . $sql . "<br>" . $conn->error;
}

$conn->close();

2 个答案:

答案 0 :(得分:0)

如果密钥已存在,您可以使用INSERT ... ON DUPLICATE KEY语法更新值,例如:

INSERT INTO instructions (hash, sala) VALUES("A", "B") ON DUPLICATE KEY UPDATE    
hash = "C";

Here是文档。

答案 1 :(得分:0)

请改用此查询:

$sql = "INSERT INTO instructions (hash, sala)
VALUES ('$newfilename', '$sala')
ON DUPLICATE KEY UPDATE hash='$newfilename'";

您还需要在列sala上创建 UNIQUE KEY 。 并且不要忘记之前被告知的SQL注入攻击。