Повторяющаяся запись при обновлении в MySQL

0

когда я вставляю 1 запись в tb_penerimaan, когда я ее отображаю, появляется 1 запись

 MariaDB [sijarvis]> SELECT tb_penerimaan.* , tb_pelanggan.nama FROM tb_penerimaan, tb_pelanggan;
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+------+-----------+----------------+-------+------------+-------+
| no_servis   | tgl_terima | kode_pelanggan | nama_perangkat | model_perangkat | no_model | keluhan    | kelengkapan | dp   | status    | solusi         | harga | presentase | nama  |
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+------+-----------+----------------+-------+------------+-------+
| SER00000001 | 2019-01-31 | PE000001       | ASUS           | X453SA          | CVT122   | gsdggfddfg | dfgfgd      | 5000 | Di Servis | Belum Diservis |     0 | 15         | Anggi |
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+------+-----------+----------------+-------+------------+-------+

и вставьте больше записи обнаружился

MariaDB [sijarvis]> SELECT tb_penerimaan.* , tb_pelanggan.nama FROM tb_penerimaan, tb_pelanggan;
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+--------+-----------+----------------+-------+------------+-------+
| no_servis   | tgl_terima | kode_pelanggan | nama_perangkat | model_perangkat | no_model | keluhan    | kelengkapan | dp     | status    | solusi         | harga | presentase | nama  |
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+--------+-----------+----------------+-------+------------+-------+
| SER00000001 | 2019-01-31 | PE000001       | ASUS           | X453SA          | CVT122   | gsdggfddfg | dfgfgd      |   5000 | Di Servis | Belum Diservis |     0 | 15         | Anggi |
| SER00000002 | 2019-02-01 | PE000002       | Sharp          | Aquos           | 305SH    | bootloop   | charger     | 123000 | Di Servis | Belum Diservis |     0 | 15         | Anggi |
| SER00000001 | 2019-01-31 | PE000001       | ASUS           | X453SA          | CVT122   | gsdggfddfg | dfgfgd      |   5000 | Di Servis | Belum Diservis |     0 | 15         | saya  |
| SER00000002 | 2019-02-01 | PE000002       | Sharp          | Aquos           | 305SH    | bootloop   | charger     | 123000 | Di Servis | Belum Diservis |     0 | 15         | saya  |
+-------------+------------+----------------+----------------+-----------------+----------+------------+-------------+--------+-----------+----------------+-------+------------+-------+    

и когда я обновляю запись, показываю ошибку

MariaDB [sijarvis]> UPDATE tb_penerimaan SET no_servis='SER00000002',tgl_terima='2019-02-01',kode_pelanggan='PE000002',nama_perangkat='Sharp',model_perangkat='Aquos',no_model='305sh',keluhan='bootloop',kelengkapan='charger',status='Di Servis',solusi='Instal RAM',harga='15000',presentase='15';
ERROR 1062 (23000): Duplicate entry 'SER00000002' for key 'PRIMARY'

когда в tb_penerimaan есть 1 запись, я могу обновить запись. когда в tb_penerimaan есть 2 записи или более, произошла ошибка. Duplicate entry 'SER00000002' for key 'PRIMARY'

  • 0
    Если у вас есть ограничение UNIQUE вас не может быть конфликтующих значений в одном и том же столбце или наборе столбцов.
  • 0
    Я просто обновляю колонки Harga, Solusi и Presentase. Я не заменил ничего, кроме трех столбцов
Теги:

2 ответа

0

это мой файл обновления

    <?php
include('koneksi.php');
// Proses input data 
  $no_servis        = $_POST['no_servis'];
  $tgl_terima       = $_POST['tgl_terima'];
  $kode_pelanggan   = $_POST['kode_pelanggan'];
  $nama_perangkat   = $_POST['nama_perangkat'];
  $model_perangkat  = $_POST['model_perangkat'];
  $no_model         = $_POST['no_model'];
  $keluhan          = $_POST['keluhan'];
  $kelengkapan      = $_POST['kelengkapan'];
  $solusi           = $_POST['solusi'];
  $status           = $_POST['status'];
  $harga            = $_POST['harga'];
if ($status == 'Di Servis') {
  $query = "UPDATE tb_penerimaan SET no_servis='$no_servis',tgl_terima='$tgl_terima',kode_pelanggan='$kode_pelanggan',nama_perangkat='$nama_perangkat',model_perangkat='$model_perangkat',no_model='$no_model',keluhan='$keluhan',kelengkapan='$kelengkapan',status='$status',solusi='$solusi',harga='$harga',presentase='15'";
mysql_query($query) or die(mysql_error());
}else if ($status == 'Di Cek') {
  $query = "UPDATE tb_penerimaan SET no_servis='$no_servis',tgl_terima='$tgl_terima',kode_pelanggan='$kode_pelanggan',nama_perangkat='$nama_perangkat',model_perangkat='$model_perangkat',no_model='$no_model',keluhan='$keluhan',kelengkapan='$kelengkapan',status='$status',solusi='$solusi',harga='$harga',presentase='40'";
mysql_query($query) or die(mysql_error());
} else if ($status == 'Di Ambil') {
  $query = "UPDATE tb_penerimaan SET no_servis='$no_servis',tgl_terima='$tgl_terima',kode_pelanggan='$kode_pelanggan',nama_perangkat='$nama_perangkat',model_perangkat='$model_perangkat',no_model='$no_model',keluhan='$keluhan',kelengkapan='$kelengkapan',status='$status',solusi='$solusi',harga='$harga',presentase='65'";
mysql_query($query) or die(mysql_error());
}else if ($status == 'Selesai') {
  $query = "UPDATE tb_penerimaan SET no_servis='$no_servis',tgl_terima='$tgl_terima',kode_pelanggan='$kode_pelanggan',nama_perangkat='$nama_perangkat',model_perangkat='$model_perangkat',no_model='$no_model',keluhan='$keluhan',kelengkapan='$kelengkapan',status='$status',solusi='$solusi',harga='$harga',presentase='100'";
mysql_query($query) or die(mysql_error());
}else{
  echo "GAGAL";
}
header("Location: transaksi.php");
  ?>

Итак, у меня есть selectbox, чтобы показать статус. и в селектбоксе были показаны "Ди Сервис", "Ди Чек", "Диамбил" и "Селесай".

0

В вашем текущем операторе Update вы пытаетесь обновить все строки. Но это невозможно, потому что no_servis должен быть уникальным. Правильно будет

UPDATE tb_penerimaan SET tgl_terima='2019-02-01', kode_pelanggan='PE000002', nama_perangkat='Sharp', model_perangkat='Aquos', no_model='305sh', keluhan='bootloop', kelengkapan='charger', status='Di Servis', solusi='Instal RAM', harga='15000', presentase='15'
WHERE no_servis = 'SER00000002';

Ещё вопросы

Сообщество Overcoder
Наверх
Меню