私はグーグルでMySqlが私にこのようなことをすることを可能にするという何かを見つけました:
$sql = "IF(EXISTS(SELECT api_key, username FROM credentials WHERE id = 0))
THEN UPDATE credentials SET api_key = ?, username = ? WHERE id = 0 ELSE
INSERT INTO credentials (api_key, username) VALUES (?, ?) END IF";
これは、クエリがその一部となる関数です。
protected function store_credentials($config_file_path = 'envato_credentials_config.json') {
$credentials_config = $this->get_envato_config($config_file_path);
$sql = "INSERT INTO credentials (api_key, username, last_update) VALUES (?, ?, NOW()) ON DUPLICATE KEY UPDATE api_key = values(api_key), username = values(username), last_update = values(last_update)";
if ($stmt = $this->connect->prepare($sql)) {
$stmt->bind_param('ss', $credentials_config['API'], $credentials_config['User']);
$stmt->execute();
$stmt->close();
} else {
return false;
}
}
私はそのようなことをすることができますか?そして、私はステートメントを明確に理解していますか?これらの2つの列内に値が見つからない場合は、新しい値が挿入されます。それ以外の場合は、更新されるだけですか?