0

データベースに ID と時間を追加する単純な php ファイルがあります。「ID」がデータベースに既にあるIDと同じ場合に「時間」のみを更新し、IDがまだデータベースにない場合は通常どおり両方を追加するように変更するにはどうすればよいですか? 「INSERT... ON DUPLICATE KEY UPDATE」構文に出くわしましたが、正しく実装できません。どんな助けでも大歓迎です。ありがとう!

<?php

$host="localhost";
$username="*****";
$password="*****";
$db_name="*****";

$id = htmlspecialchars($_GET["id"]);
$time = intval(htmlspecialchars($_GET["time"]));

echo $id;
echo $time;

$data = array("id" => $id, "time" => $time);

var_dump($data);

$mysqli = new mysqli($host, $username, $password, $db_name);

/* check connection */
if (mysqli_connect_errno()) {
    printf("Connect failed: %s\n", mysqli_connect_error());
    exit();
}

$stmt = $mysqli->prepare("INSERT INTO testdata (id, time) VALUES (?, ?)");

if($stmt === FALSE)
    die("Prepare failed... ");// Handle Error Here

    // the types of the data we are about to insert: s = string, i = int
    $stmt->bind_param('si', $data['id'], $data['time']);    
    $stmt->execute();

$stmt->close();

// close the connection to the database
$mysqli->close();

?>
4

1 に答える 1

0

次のようにする必要があります。

INSERT INTO testdata (id,time) VALUES(?,?) 
   ON DUPLICATE KEY UPDATE time=values(time)

ただし、@Mike W がコメントで述べたように、ID が主キーまたは一意の INDEX であることを確認してください。ドキュメントの詳細

于 2013-10-20T20:58:41.233 に答える