Данные, представленные в таблице postgresql, больше не обновляются. Я хочу перезаписать данные. Когда я просто использую вставку, добавляются новые данные, но старые данные остаются. Я пытался использовать обновление, но потом получаю ошибки. Я хотел бы обновить все записи. Я думаю, что это, вероятно, что-то с синтаксисом. Но не могу найти проблему.
Код
$dbname = "dbtest";
$host = "localhost";
$username = "postgres";
$password = "pasword";
$dbh = new PDO("pgsql:dbname=$dbname; host=$host", $username, $password);
$dbh->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$c = array("Human","Mouse","Rat","Hamster","SV40");
$b = array("Human HBO gene", "Mouse BB gene", "Human CCB gene", "SV40 TP gene", "Hamster TP53 gene");
$count=0;
foreach($c as $key => $d){
$e =$b[$key];
$name = $count++;
if (strpos($e, $d) !== FALSE) {
$match = $d;
$specie = $d;
$specie = str_replace("Human","Homo Sapiens",$specie);
$specie = str_replace("Mouse","Mus Musculus",$specie);
$specie = str_replace("Rat","Rattus norvegicus",$specie);
$Specie = str_replace("Hamster", "Mesocricetus Auratus",$specie);
$specie = str_replace("SV40","Simian virus 40",$specie);
}else{
$match = "0";
$specie = "0";
}
echo $match. " ". $specie. " ";
$var_id = $name;
$var_match = $match;
$var_full_name = $specie;
#$sql = "INSERT INTO species (id,match,full_name) VALUES ('".$var_id."','".$var_match ."','".$var_full_name."')";
$sql = "UPDATE species SET id = '".$var_id."', match = '".$var_match ."', full_name='".$var_full_name."'";
if ($dbh->query($sql)) {
echo "New Record Inserted Successfully!<br \>\n";
}else{
echo "Data not successfully Inserted.<br \>\n";
}
}
Ошибка, которую я получаю:
Неустранимая ошибка: Uncaught PDOException: SQLSTATE [42601]: синтаксическая ошибка: 7 ОШИБКА:> синтаксическая ошибка в или рядом с «Sapiens» LINE 1: ...species SET id = '0', match = Human, full_name = Homo Sapiens' ^ в /var/www/html/test/Insert.php:59 Трассировка стека: #0 /var/www/html/test/Insert.php(59): PDO->query('ОБНОВЛЕНИЕ видов...') # 1 {main} добавлено в /var/www/html/test/Insert.php в строке 59
$specie
и$Specie
. В вашем запросе вам, вероятно, нужно добавитьwhere id=$id
, если вы не хотите обновлять ВСЕ записи. При обновлении вы также не хотите обновлятьid
этой конкретной записи. - person brombeer   schedule 18.05.2018