Это решение, которое я нашел.Я разделил запрос на, потому что ON CONFLICT не работал для меня.Сначала я использую select, чтобы определить, существует ли строка, проверив, присутствует ли id.Если идентификатор присутствует, данные обновляются.Если идеи нет, добавляется новая строка.
Функция
function execute_query($query,$dbh){
if ($dbh->query($query)) {
return "New Record Inserted Successfully!<br \>\n";
}else{
return "Data not successfully Inserted.<br \>\n";
}
}
Выбрать и подготовить оператор
$query = 'SELECT * FROM species '. 'WHERE id = '. "'".$var_id."'";
$stmt = $dbh->prepare($query);
$stmt->execute();
$result = $stmt->setFetchMode(PDO::FETCH_ASSOC);
$out = $stmt->fetch();
print_r($out) ;
Если результат => обновить строку
if ($out !== false){
$sql = "UPDATE species SET id = '".$var_id."', match ='".$var_match."',full_name = '".$var_full_name."'
WHERE id = '".$var_id."' ";
echo $sql ."<br \>\n";;
execute_query($sql,$dbh); # function
echo "Value is updated";
}else{ ### If no result => insert new values
$sql = "INSERT INTO species (id,match,full_name)VALUES
('".$var_id."','".$var_match ."','".$var_full_name."')";
execute_query($sql,$dbh);
echo "New value is inserted";