Pomoc - Szukaj - Użytkownicy - Kalendarz
Pełna wersja: Rekord nie zostaje dodany do bazy danych
Forum PHP.pl > Forum > PHP
forestwow
Witam, mam taki problem. Jak widac na poniższym przykładzie, jeśli mysql_num_rows wynosi 0, czyi takiego wpisu nie ma w BD to i tak nie zostaje on dodany, mimo braku jakiegokolwiek błedu, a samo polecenie sql jest poprawne na 100%. Update natomiast działa bez problemu. Jakies pomysły, podpowiedzi ? Nie zabardzo wiem dlaczego nie dodaje mi nowego rekordu...

  1. $spr = mysql_query("SELECT `Suma_punktow` FROM `punkty_karne` WHERE `IDOsoba` = $idk[IDOsoba]");
  2. if(mysql_num_rows($spr)==0)
  3. {
  4. mysql_query("INSERT INTO `punkty_karne` (`IDOsoba`,`Suma_punktow`) VALUES ('$idk[IDOsoba]','$_POST[punktykarne]'");
  5.  
  6. }
  7. else
  8. {
  9.  
  10. $pkt = mysql_fetch_array($spr);
  11.  
  12. $pkt2 = $pkt['Suma_punktow'];
  13. $pkt2=$pkt2+$_POST['punktykarne'];
  14. mysql_query("UPDATE `punkty_karne` SET `Suma_punktow`=$pkt2 WHERE `IDOsoba`=$idk[IDOsoba]");
  15.  
  16. }
  17.  
  18.  
  19.  
CuteOne
1.
  1. $spr = mysql_query("SELECT `Suma_punktow` FROM `punkty_karne` WHERE `IDOsoba` = '{$idk['IDOsoba']}'") or die(mysql_error());
  2.  
  3. if(!mysql_num_rows($spr))
  4. {
  5. mysql_query("INSERT INTO `punkty_karne` (`IDOsoba`,`Suma_punktow`) VALUES ('{$idk['IDOsoba']}','{$_POST['punktykarne']}'") or die(mysql_error());
  6.  
  7. }
  8. else
  9. {
  10.  
  11. $pkt = mysql_fetch_array($spr);
  12.  
  13. $pkt2 = $pkt['Suma_punktow'];
  14. $pkt2=$pkt2+$_POST['punktykarne'];
  15. mysql_query("UPDATE `punkty_karne` SET `Suma_punktow`=$pkt2 WHERE `IDOsoba`= '{$idk['IDOsoba']}'") or die(mysql_error());
  16. }


2. poczytaj o sql injection bo $_POST['punktykarne'] nie powinien się znaleźć w zapytaniu
forestwow
@Problem rozwiązany, w "insert into" zabrakło mi nawiasu... w kazdym badz razie dzieki za pomoc.



Mimo wszystko, chyba jednak jest jakis bład w składni sql...

"You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '' at line 1"

odnosi się to do "INSERT INTO...."
radziopoke
To co podał CuteOne musi zadziałać. A jeżeli nie przekopiowałeś tego tylko próbowałeś poprawić to zapewne nie zauważyłeś że przy zmiennej $_POST[punktykarne] brakuje dla nazwy punktykarne apostrofów.
A tak na przyszłość jak mi coś jest nie tak z zapytaniem to je po prostu wyświetlam na ekranie np:
Kod
$zapytanie="INSERT INTO `punkty_karne` (`IDOsoba`,`Suma_punktow`) VALUES ('$idk[IDOsoba]','$_POST[punktykarne]'";
echo $zapytanie;
$spr = mysql_query($zapytanie) or die(mysql_error());

i od razu zauważysz czego brakuje w zapytaniu smile.gif
Ale mam jeszcze jedno drobne pytanie czy IDOsoba i Suma_punktow w mysql to typ INT jeżeli tak to po co zmienne $idk[IDOsoba] i $_POST[punktykarne] w apostrof wkładasz?
xdev
Ściągnij sobie navicat lite a z tym potworkiem (phpMA) to nawet się nie baw. Przecież to jest przedpotopowa technologia, pełno w tym błędów.
To jest wersja lo-fi głównej zawartości. Aby zobaczyć pełną wersję z większą zawartością, obrazkami i formatowaniem proszę kliknij tutaj.
Invision Power Board © 2001-2025 Invision Power Services, Inc.