DevProTalk

DevProTalk (http://www.devprotalk.com/index.php)
-   SQL baze podataka - Sponzor: Baze-Podataka.net (http://www.devprotalk.com/forumdisplay.php?f=10)
-   -   Problem: Error updating database (http://www.devprotalk.com/showthread.php?t=10072)

AdriaMart 23. 05. 2011. 13:38

Problem: Error updating database
 
Imam ovaj kod:

$naslov = $data['nalsov'];


mysql_connect ("localhost", "baza", "lozinka") or die ('Error: '.mysql_error());
mysql_select_db ("mojabazar_mmm");

$query="INSERT INTO asd (ID, naslov)VALUES ('NULL','".$naslov."')";

mysql_query($query) or die ('Error updating database');
echo "Baza je updejtovana sa: " .$naslov. " ";

Gde je greska?

Br@nkoR 23. 05. 2011. 13:50

NULL nemoj stavljati pod jednostruke navodnike. Koristi mysql_error() da bi video grešku u upitu.

McKracken 23. 05. 2011. 14:34

Naslov se ne pise "nalslov" pa i tu imas verovatno problem

AdriaMart 23. 05. 2011. 16:31

Nije u tome problem... verovatno je nesto sa tipovima podataka... u svakom slucaju hvala na pronadjenim greskama u kodu.

mileusna 23. 05. 2011. 17:08

Koristi mysql_error() da vidiš koja je greška, ali evo ja ću ti pokušati i bez toga da ti pomognem: :)

Kôd:

$query="INSERT INTO asd (ID, naslov)VALUES ('NULL','".$naslov."')";
Predpostavljam da je ID neki numerik tip polja, integer i sl. tako da on može da prima samo brojeve a ti u njega upistuješ string tj. 'NULL'. NULL pod navodnicima ništa ne znači, to je običan string jer pod navodnicima MySQL ne interesuje da li si ti napisao 'NULL' ili 'PERA'.

Ako želiš da upušeš NULL vrednost u polje, onda upisuješ NULL bez navodnika, dakle ovo što ti je već @Br@nkoR predložio:

Kôd:

$naslov = mysql_real_escape_string($naslov);
$query="INSERT INTO asd (ID, naslov) VALUES (NULL, '$naslov')";

Sve to naravno pod uslovom da polje ID može da bude NULL.

Druga moguća stvar je što nisi uradio eskejp stringa $naslov. Recimo ako je naslov Nemo' da me zavritlavaš bez eskejpovanja MySQL upit će sadržati 'Nemo' da me zavritlavaš' i zbog ovih rasparenih navodnika upit puca. Navodnici su samo jedan primer, preskakanje ovog koraka dovodi do mnogih zloupotreba i rupa u bazi podatak. Zato sve stringove koji se upisuju u bazu obavezno na escape prvo.

AdriaMart 23. 05. 2011. 17:29

Pokusao sam nesto preko phpmyadmin-a i upravu si, evo sta kaze: Column 'ID' cannot be null ... e sad zasto column 'ID' nemoze da bude null zaista neznam... da li da stavim npr. $i=0 pa da se $i svaki put uvecava za 1... ?

mileusna 23. 05. 2011. 17:35

Zato što je verovatno u strukturi baze naglašeno NOT NULL :) Vrlo je moguće da je ID AUTO_INCREMENT, ako nije, napravi ga da bude (može sve iz phpMyAdmin). Onda MySQL sam vodi računa o dodeljivanju ID-ja redom, a ti samo upisujše naslov, recimo.

Kôd:

$naslov = mysql_real_escape_string($naslov);
$query="INSERT INTO asd (naslov) VALUES ('$naslov')";
$new_id = mysql_insert_id(); // ovde vidi koji ID je mysql dodelio novom slogu

Funcijom mysql_insert_id() dobićeš ID koji je MySQL dodelio poslednje upisanom slogu.

Moraćeš malo da savladaš osnove baza podataka i MySQL-a, jbg...

AdriaMart 23. 05. 2011. 17:43

Da, moracu ... ucim ... davno sam radio u programskom jeziku delphi 7 i baze pa mi je znanje iz ovog jako slabo, a i poprilicno je drugacije raditi u php-u...

Da to je bio problem jer polje ID nije bilo niti NULL niti auto_increment...

Thanks for HELP!

AdriaMart 23. 05. 2011. 23:36

Potrebno je da u bazu upisem sledci broj 20.456788 pa me interesuje koji tip podataka da koristim?

webarto 23. 05. 2011. 23:39

FLOAT... i možeš pisati ovako ne moraš duplirati varijable... $query="INSERT INTO asd (ID, naslov)VALUES ('$data[naslov]')";


Vreme je GMT +2. Trenutno vreme je 21:14.

Powered by vBulletin® Verzija 3.6.8
Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
Copyright © DevProTalk. All Rights Reserved.

Mišljenja, saveti, izjave, ponude ili druge informacije ili sadržaji nastali na Sajtu su vlasništvo onoga ko ih je kreirao, a ne DevProTalk.com, tako da ne morate da se oslanjate na njih.
Autori poruka su jedini odgovorni za ovakve sadržaje. DevProTalk.com ne garantuje tačnost, kompletnost ili upotrebnu vrednost informacija, stavova, saveta ili datih izjava. Ne postoje uslovi pod kojima bi mi bili odgovorni za štetu ili gubitak koji je posledica bilo čijeg oslanjanja na nepouzdane informacije, ili bilo kakve informacije nastale kroz komunikaciju između registrovanih članova.
Web sajt može sadržavati linkove na druge web sajtove na Internetu ili neke druge sadržaje. Ne kontrolišemo niti podržavamo te druge web sajtove, niti smo pregledali bilo kakve sadržaje na takvim sajtovima. Mi nećemo biti odgovorni za legalnost, tačnost ili prikladnost bilo kog sadržaja, oglasa, proizvoda, usluga ili informacije lociranim na ili distribuiranih kroz druge web sajtove, niti za bilo kakvu štetu nastalu kao posledica takvih informacija. DevProTalk.com drži i čuva druga prava vlasništva na web sajtu. Web sajt sadrže materijale zaštićene copyright-om, zaštitne znakove i druge informacije o pravu vlasništva ili softver. Članovi mogu poslatu informacije zaštićene pravima vlasništva njihovih nosilaca i ona ostaju zaštićena bez obzira da li su oni koji prenose te informacije to naveli ili ne. Osim informacija koje su u javnom vlasništvu ili za koje dobijete dozvolu, nemate pravo da kopirate, modifikujete ili na bilo koji način menjate, objavljujete, prenosite, distribuirate, izvršavate, prikazujete ili prodajte bilo koju informaciju zaštićenu pravima vlasništva. Slanjem informacija ili sadržaja na bilo koji deo DevProTalk.com, Vi automatski dozvoljavate i predstavljate garanciju da imate pravo da dozvolite DevProTalk.com ili članovima DevProTalk.com bespovratnu, kontinualnu, neograničenu, globalnu dozvolu da koriste, kopiraju, izvršavaju, prikazuju i distribuiraju takve informacije i sadržaje i da iz takvih sadžaja koriste bilo koji deo u bilo koje svrhe, kao i pravo i dozvolu da koriste gore navedene sadržaje. Svi zaštitni znakovi (trademarks), logotipi, oznake usluga, firme ili imena proizvoda koji se pominju na ovom web sajtu su vlasništvo kojim raspolažu njihovi vlasnici.