Brisanje vrednosti iz baze pomocu PHP-a i JavaScripta

2

Brisanje vrednosti iz baze pomocu PHP-a i JavaScripta

offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4576

Napišeš select upit za sve stavke sa tim ID-em i koristiš mysqli_fetch_row().

SELECT * FROM Projekat WHERE id=<id>

if ($result = mysqli_query($conn, $query)) {     if ($row = mysqli_fetch_row($result)) {         // postoji     } else {         // ne postoji     }     mysqli_free_result($result); } mysqli_close($conn);



Registruj se da bi učestvovao u diskusiji. Registrovanim korisnicima se NE prikazuju reklame unutar poruka.
offline
  • Pridružio: 02 Jan 2008
  • Poruke: 2167

Sada radi, to je to Smile Hvala vam jos jednom

Da li je ovo u redu sto se tice sigurnosti (SQL Injection)?

Usput, izbacio sam mysqli_close($conn); posto mi javlja "PHP Warning: mysqli::close(): Couldn't fetch mysqli in ..." a ostavio sam $conn->close();, posto je ista konekcija u pitanju, i pretpostavljam da warning dobijem jer hocu dva puta da je zatvorim?

<?php header('Content-Type: text/html; charset=utf-8'); $servername = "localhost"; $username = "projekat"; $password = "..."; $dbname = "..."; // Create connection $conn = new mysqli($servername, $username, $password, $dbname); // Check connection if ($conn->connect_error) {     die("Connection failed: " . $conn->connect_error); } $tabela = $_GET['delete_id']; $query_provera = "SELECT * FROM projekat.Predmeti WHERE SifraPredmeta='$tabela'"; if (isset($tabela) && !empty($tabela)) //$sql = "DELETE FROM projekat.Predmeti WHERE SifraPredmeta='$tabela'"; if ($result = mysqli_query($conn, $query_provera)) {       if ($row = mysqli_fetch_row($result)) {         // postoji         $stmt = $conn->prepare("DELETE FROM projekat.Predmeti WHERE SifraPredmeta = ?"); $stmt->bind_param('s', $tabela); $stmt->execute(); echo '<script type="text/javascript">            alert("Predmet sa šifrom '.$tabela.' uspešno obrisan!");            window.location = ".../predmeti.php"       </script>'; $stmt->close();     } else {         // ne postoji         echo '<script type="text/javascript">            alert("GREŠKA! Predmet '.$tabela.' ne postoji u bazi. Pokušajte opet...");            window.location = ".../predmeti.php"       </script>';     }       mysqli_free_result($result); }   //mysqli_close($conn); $conn->close(); ?>



offline
  • Programer
  • Pridružio: 23 Maj 2012
  • Poruke: 4576

Naravno da ti ne treba mysqli_close ako si već zatvorio konekciju, to sam samo naveo u primeru Wink

Što se tiče SQL Injection-a, baci pogled na ovaj članak. Bolje je da sada proveriš to i eventualno izgubiš neke redove, ali da budeš siguran da si obezbedio bazu.

I još nešto - onaj primer iznad što sam ti napisao je pisan u proceduralnom stilu, no sada vidim da si pisao u objektno-orijentisanom stilu tako da bi bilo bolje i da se držiš tog načina pisanja kroz ceo projekat:

if ($result = $mysqli->query($query)) {     if ($row = $result->fetch_row()) {         // postoji     } else {         // ne postoji     }         $result->close(); }

Inače $result->close() ne zatvara konekciju sa bazom već oslobađa set rezultata (da ne misliš da je višak pa da ga obrišeš).

offline
  • Pridružio: 02 Jan 2008
  • Poruke: 2167

Ispravljeno Smile

Da, video sam to sto se tice rezultata, posto sam koliko-toliko procitao dokumentaciju za metode koji si mi napisao u prethodnom postu.

$result = $conn->query($query_provera); if (isset($tabela) && !empty($tabela)) if ($result) {     if ($row = $result->fetch_row()) {         // postoji         $stmt = $conn->prepare("DELETE FROM projekat.Predmeti WHERE SifraPredmeta = ?");         $stmt->bind_param('s', $tabela);         $stmt->execute();         echo '<script type="text/javascript">            alert("Predmet sa šifrom '.$tabela.' uspešno obrisan!");            window.location = ".../predmeti.php"       </script>'; $stmt->close();     } else {         // ne postoji         echo '<script type="text/javascript">            alert("GREŠKA! Predmet '.$tabela.' ne postoji u bazi. Pokušajte opet...");            window.location = ".../predmeti.php"       </script>';     }       $result->close(); }

Hvala na ovom clanku. Bitno mi je da sam ovo zavrsio, a primere za SQL Injection cu svakako proveriti.

Ko je trenutno na forumu
 

Ukupno su 1140 korisnika na forumu :: 100 registrovanih, 6 sakrivenih i 1034 gosta   ::   [ Administrator ] [ Supermoderator ] [ Moderator ] :: Detaljnije

Najviše korisnika na forumu ikad bilo je 3466 - dana 01 Jun 2021 17:07

Korisnici koji su trenutno na forumu:
Korisnici trenutno na forumu: 015, ajo baba, antonije64, Asteker, Bickoooo, Bojan198527, Boris.A, BORUTUS, Botovac, bpvl, Brankojle, brufen, Bubimir, burevestnik, Cian, Cigi, CikaKURE, darkojovxp, Darth Wader, delboy, doom83, Dorijan Grej, Dragon Order, drale12, DrNeoCortex, dushan, Electron, feanor, FileFinder, FOX, Gheljda, goxin, Hardenberg, Haris, interesujeme, Jakonjveliki, jalos, janezek67, Jeremiah, jodzula, JohnnyBoii, Kobrim, kuntalo, kybonacci, ljubsz, LostInSpaceandTime, luka35, Mae, Manjane, Maruti, mat, mačković, milenko crazy north, Milo97, Milos1389, mitja2512, moldway, narandzasti, nelezele, nemkea71, nesa1962, neutrino, Nikola Galovic, nikoladim, nobutado, Nomica, Paklenica, Panter, Phalanx, Pilence, Pohovani_00, precan, Romibrat, sabros, saputnik plavetnila, Skok23, skvara, SlaKoj, Slobodan Filipović, SOVO515, SpeedyGonzales, Sr.Stat., ss10, stegonosa, Stoilkovic, stokssone, Str2022, suton, synergia, tamno.nebo, Tas011, Timočka Divizija, TRZH92, vanja.maric, vathra, vensla, voja64, Vrač, Zavulon, ZlatniRez