• Najnowsze pytania
  • Bez odpowiedzi
  • Zadaj pytanie
  • Kategorie
  • Tagi
  • Zdobyte punkty
  • Ekipa ninja
  • IRC
  • FAQ
  • Regulamin
  • Książki warte uwagi

Column 'id' cannot be null

Object Storage Arubacloud
0 głosów
468 wizyt
pytanie zadane 16 marca 2020 w SQL, bazy danych przez PatryQHyper Nowicjusz (170 p.)
otwarte ponownie 17 maja 2020 przez PatryQHyper

Witam

Ostatnio piszę w PHP system ItemShopu do Minecrafta, ale mam jeden problem. Kiedy dodaje usługę poprzez formularz nic się nie wyświetla, a gdy dodam przez bazę w "SQL" pisze #1048 - Column 'id' cannot be null.

Jak można to naprawić?

 

<?php

	session_start();
	
	if (!isset($_SESSION['zalogowany']))
	{
		header('Location: index.php');
		exit();
	}
	
?>
<?php ini_set('display_errors', 0);
    $nazwa = $_POST["nazwa"];
    $opis = $_POST["opis"];
    $smstaknie = $_POST["smstaknie"];
    $grafika = $_POST["grafika"];
    $smsnumer = $_POST["smsnumer"];
    $smskod = $_POST["smskod"];
    $bruttosms = $_POST["bruttosms"];
    $nettosms = $_POST["nettosms"];
    include_once('../dbconnect.php');
      $conn = new mysqli($servername, $username, $password, $dbname);
      $sql = "SELECT * FROM `pathyper_services`";
            $result = $conn->query($sql);
            if ($conn->connect_errno!=0)
            {
                die('Nie można połączyć się z bazą. Czy poprawnie wpisałeś/aś dane do bazy danych w dbconnect.php?');
            }
            else {
            mysqli_set_charset($conn,"utf8");
            $sql = "SELECT * FROM `pathyper_services`";
            $result = $conn->query($sql);
            if (@$result->num_rows > 0) {
                while($row = $result->fetch_assoc()) { 
                    $conn->query("INSERT INTO `pathyper_services` (`id`, `shopid`, `servicename`, `servicedesc`, `serviceurl`, `sms`, `sms_number`, `sms_code`, `sms_id`, `sms_netto`, `sms_brutto`, `paypal`, `paypal_price`, `paysafecard`, `paysafecard_price`, `przelew`, `przelew_cena`, `przelew_link`) VALUES (NULL, '1', '$nazwa', '$opis', '$grafika', '$smstaknie', '$smsnumer', '$smskod', '', '$nettosms', '$bruttosms', 'NIE', '', 'NIE', '', 'NIE', '', '')");
                    //header('Location: admin_success.php?action=service_add');
                }
            } else {
                mysqli_set_charset($conn,"utf8");
                $conn->query("INSERT INTO `pathyper_services` (`id`, `shopid`, `servicename`, `servicedesc`, `serviceurl`, `sms`, `sms_number`, `sms_code`, `sms_id`, `sms_netto`, `sms_brutto`, `paypal`, `paypal_price`, `paysafecard`, `paysafecard_price`, `przelew`, `przelew_cena`, `przelew_link`) VALUES (NULL, '1', '$nazwa', '$opis', '$grafika', '$smstaknie', '$smsnumer', '$smskod', '', '$nettosms', '$bruttosms', 'NIE', '', 'NIE', '', 'NIE', '', '')");
                //header('Location: admin_success.php?action=service_add');
            }
        }
    ?>

 

komentarz 16 marca 2020 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)

@PatryQHyper, no to jeśli chcesz wszędzie mieć wartości to wypisz swoje wartości w pierwszych nawiasach a nie jak na przykładzie wyżej je pomijasz...

komentarz 16 marca 2020 przez PatryQHyper Nowicjusz (170 p.)
Wpadłem na dość idiotyczne rozwiązanie. Użytkownik sam sobie wpisuje ID
komentarz 16 marca 2020 przez PatryQHyper Nowicjusz (170 p.)

Dziękuję za poświęcony czas nad moim problemem. smiley

komentarz 16 marca 2020 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
To że użytkownik sam sobie wpisuje id nie jest rzowiązaniem a przyczyną kolejnych problemów :)
1
komentarz 16 marca 2020 przez adrian17 Ekspert (345,220 p.)
To nie jest rozwiązanie tylko ominięcie tego, że jakąś prostą głupotę masz gdzieś w SQLach, tylko sam nie możesz tego z nami dobrze skomunikować :(

1 odpowiedź

0 głosów
odpowiedź 16 marca 2020 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
wybrane 16 marca 2020 przez PatryQHyper
 
Najlepsza
"INSERT INTO `pathyper_services` (`id`, `shopid`, `servicename`, `servicedesc`, `serviceurl`, `sms`, `sms_number`, `sms_code`, `sms_id`, `sms_netto`, `sms_brutto`, `paypal`, `paypal_price`, `paysafecard`, `paysafecard_price`, `przelew`, `przelew_cena`, `przelew_link`) VALUES (NULL, '1', '$nazwa', '$opis', '$grafika', '$smstaknie', '$smsnumer', '$smskod', '', '$nettosms', '$bruttosms', 'NIE', '', 'NIE', '', 'NIE', '', '')"

Robisz inserta w którym podjesz, wartość ID = null. Zapewne w twojej strukturze bazy ID musi posiadać jakąś wartość (dobrze by było jakby było też unikalne). Po prostu wstaw tutaj jakiś id i będzie działać.

komentarz 16 marca 2020 przez PatryQHyper Nowicjusz (170 p.)
Tylko chodzi mi o to, że jeśli ID zawsze będzie 1 to nie będzie można dodawać więcej usług
komentarz 16 marca 2020 przez Paweł Nąckiewicz Nałogowiec (48,990 p.)
To zmień strukturę bazy - pole ID daj autoincrement.

Następnie w insercie nie podawaj właściwości 'id'
komentarz 16 marca 2020 przez PatryQHyper Nowicjusz (170 p.)
W bazie ciągle mam id 0, a pole ID usunąłem. Potrzebuje żeby były różne ID, bo potem będzie link pay.php?id=<id usługi>

Podobne pytania

0 głosów
1 odpowiedź 466 wizyt
0 głosów
1 odpowiedź 612 wizyt
+1 głos
2 odpowiedzi 162 wizyt
pytanie zadane 13 listopada 2020 w SQL, bazy danych przez okti00 Obywatel (1,300 p.)

92,634 zapytań

141,505 odpowiedzi

319,883 komentarzy

62,015 pasjonatów

Motyw:

Akcja Pajacyk

Pajacyk od wielu lat dożywia dzieci. Pomóż klikając w zielony brzuszek na stronie. Dziękujemy! ♡

Oto polecana książka warta uwagi.
Pełną listę książek znajdziesz tutaj.

Akademia Sekuraka

Kolejna edycja największej imprezy hakerskiej w Polsce, czyli Mega Sekurak Hacking Party odbędzie się już 20 maja 2024r. Z tej okazji mamy dla Was kod: pasjamshp - jeżeli wpiszecie go w koszyku, to wówczas otrzymacie 40% zniżki na bilet w wersji standard!

Więcej informacji na temat imprezy znajdziecie tutaj. Dziękujemy ekipie Sekuraka za taką fajną zniżkę dla wszystkich Pasjonatów!

Akademia Sekuraka

Niedawno wystartował dodruk tej świetnej, rozchwytywanej książki (około 940 stron). Mamy dla Was kod: pasja (wpiszcie go w koszyku), dzięki któremu otrzymujemy 10% zniżki - dziękujemy zaprzyjaźnionej ekipie Sekuraka za taki bonus dla Pasjonatów! Książka to pierwszy tom z serii o ITsec, który łagodnie wprowadzi w świat bezpieczeństwa IT każdą osobę - warto, polecamy!

...