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: 4575

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: 4575

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 864 korisnika na forumu :: 2 registrovanih, 0 sakrivenih i 862 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: Metanoja, WerWolf14