Php mysql provjera dali je upit prazan

poruka: 6
|
čitano: 604
|
moderatori: pirat, Lazarus Long, XXX-Man, vincimus
1
+/- sve poruke
ravni prikaz
starije poruke gore
8 godina
neaktivan
offline
php mysql provjera dali je upit prazan

tabla1

-------

id

ime

telefon

adresa

 

<?php

include('konekcija.php');

$upit = mysql_query(" SELECT id FROM tabla1 WHERE id='1' ");
if ($upit){
    if (mysql_num_rows($upit)==0) {
      echo 'UPIT JE PRAZAN';
    }else{
      echo 'UPIT NIJE PRAZAN';
    }
}

 

to ne radi

 

include('konekcija.php');

$upit = mysql_query(" SELECT id FROM tabla1 WHERE id='1' ");

if(mysql_num_rows($upit)>0){

   echo 'UPIT NIJE PRAZAN';

}

 

ni to ne radi

 

ima li netko kakav savjet?

Moj PC  
0 0 hvala 0
15 godina
odjavljen
offline
Re: php mysql provjera dali je upit prazan

"ne radi" je širok pojam:

- ne radi ono što misliš da radi

- ne radi ono što dokumentacija kaže da radi

- izbacuje error

- sve gore navedeno, samo u speficičnim okolnostima

 

Savjeti:

 

1.) Zaboravi da mysql_* funkcije uopće postoje

 

 

Radi se o funkcijama koje su deprecated od verzije PHP-a 5.5, te su uklonjene u verziji PHP 7.0. Ako ti je PHP 7.0 ili noviji, onda ti kod puca jer koristiš funkcije koje više ne postoje.

 

Alternative PDO ili mysqli_* funkcije. Ja osobno preferiram PDO, ali prouči jedan i drugi, pa odluči što ti bolje leži.

 

 

2.) Uključi prikaz errora

 

Možeš ga uključiti u php.ini fileu ili preko PHP-a (najbolje na početku filea):

 

ini_set('display_errors', 1);
error_reporting(E_ALL);

 

Preferirano je postaviti preko php.ini jer tako možeš postaviti i display_startup_errors kojeg kroz PHP ne možeš postaviti (točnije možeš, ali ako je došlo do tog dijela koda, onda više nije ni bitno), ali ako nisi siguran u čačkanje po php.ini, onda možeš kroz PHP.

 

Tako ćeš znati već po error poruci gdje tražiti rješenje. Možeš pogledati i u error log fileu ima li što korisnjo, ali za developement je bolje dobiti sve errore odmah na ekranu.

 

 

3.) Nauči što je SQL injection

 

Iako tu grešku nisi napravio, očito je da se učiš i vrlo je vjerojatno da ćeš, kad budeš trebao ubaciti id dinamički iz varijable, grešku napraviti. 

 

$id = $_GET['id];

$upit = mysql_query(" SELECT id FROM tabla1 WHERE id='$id' ");

 

Da to riješiš na ovaj gore način, praktički si otvorio bazu za svakakve gadne stvari. Zlonamjerni korisnik može napraviti bilo što, pa ako pristupi s url-om:

 

tvoja-skripta.php?id=1'; DROP TABLE tabla1; --

 

gornji query se pretvara u:

 

SELECT id FROM tabla1 WHERE id='1'; DROP TABLE tabla1; --'

 

Što su dva querya (ovo -- na kraju znači početak komentara, pa ' na kraju tvog querya neće uzrokovati error), a drugi query briše tablicu iz baze.

Privatne poruke su za privatne razgovore. Ne odgovaram na općenita pitanja vezana uz neku temu.
8 godina
neaktivan
offline
Re: php mysql provjera dali je upit prazan

ne radi ono što meni treba.

 

kada odem direktno upisati u bazu sql, daje mi jedan rezultat, a pise "Prikazivanje redaka 0 - 0 (1 ukupno, Upit je trajao 4f sek)"

 

znaci upit radi i trebao bi biti rezultat pun, a neznam zasto onda nece proci petlju if resultat>0, to mi nije jasno.

 

"Radi se o funkcijama koje su deprecated od verzije PHP-a 5.5, te su uklonjene u verziji PHP 7.0. Ako ti je PHP 7.0 ili noviji, onda ti kod puca jer koristiš funkcije koje više ne postoje."

 

WAMP5 , lokalni server na mome PC-u.

 

Apache version :Apache/2.2.4 (Win32)
 
PHP version :5.2.4
 
MySQL version :5.0.45-community-nt
"očito je da se učiš"
odma si me prokljuvio, a ne da ucim nego i zivim u prošlosti. Daleko sam ja od oop

 

15 godina
odjavljen
offline
Re: php mysql provjera dali je upit prazan

Jesi siguran da je konekcija uspješno otvorena?

Privatne poruke su za privatne razgovore. Ne odgovaram na općenita pitanja vezana uz neku temu.
8 godina
neaktivan
offline
Re: php mysql provjera dali je upit prazan

include('konekcija.php');

 

evo ubacio ovo:


if (!$konekcija) // Proverava da li $konekcija postoji
{
die("Greska u konekciji: " . mysql_error());
}

nije javilo nista. 

 

No da bi dosao do stranice za prikaz podataka iz tel.imenika moram se ispravno logirati. To se odradi na login prvoj strani. 

Ti se podaci provjere sa bazom i ako nisam upisao dobre podatke ne pusti me dalje. Da nema konekcije na bazu pokazalo bi tu gresku.

Na pocetku mi je javilo jer nisam dobro unio ime baze. To sam ispravio i sada imam konekciju.

 

Ja sam dosao do sljedece stranice, pokazo se meni i sada sam tu zapeo

8 godina
neaktivan
offline
Re: php mysql provjera dali je upit prazan

jebajga, osto bez dolara

 

include('konekcija.php');

$id=$_SESSION['login_user'];

$upit = mysql_query("SELECT * FROM tabla WHERE id='id' ");  ==> GRESKA , zaboravio $ za varijablu id='$id' 
if ($upit){
    if (mysql_num_rows($upit)==0) {
       echo 'NEMA PODATAKA' . "<br />";
    }else{
       echo 'IMA PODATAKA' . "<br />";
    }
}

 

evo radi. moze da se zatvori

Poruka je uređivana zadnji put uto 17.3.2020 23:40 (drljo).
1
Nova poruka
E-mail:
Lozinka:
 
vrh stranice