2

レコードが既に存在する場合にINSERTまたはUPDATEする方法については、あちこちで答えを見つけました。適切なアプローチは、on duplicate key updateまたはREPLACEを使用することですが、準備されたステートメントを使用してこれを行う方法がどこにも見つからないようです。これは可能ですか?

編集:

わかりました、私の質問をより具体的にさせてください:

この例のような mysqli 準備済みステートメントがある場合:

if ($stmt = $mysqli->prepare("UPDATE test SET name= ?, age= ? WHERE iduser= ?")) {    
    $stmt->bind_param('ssi', $name, $age, $id);
    $stmt->execute();
}

この場合、どのようにビルドon duplicate key update すればよいですか?:

if ($stmt = $mysqli->prepare("INSERT INTO test (iduser, name, age) VALUES (?,?,?))){
ON DUPLICATE KEY UPDATE name=?,age=?")) {    
    $stmt->bind_param('iss', $id, $name, $age);
    $stmt->execute();
}
4

1 に答える 1

3

何か不足している可能性がありますが、2番目の bindParam を次のように更新することはできません$stmt->bind_param('issss', $id, $name, $age, $name, $age)か?

疑問符の仕組みがわからず、コード例をコピーして貼り付けるだけの場合は、mysqliを読むか、PDOを調べることをお勧めします。

于 2013-10-25T21:04:14.363 に答える