Kezdőoldal » Számítástechnika » Programozás » Nem jól dönti el SQL-ben a...

Help_asd kérdése:

Nem jól dönti el SQL-ben a nevet miért?

Figyelt kérdés

hiba nincs de ha olyat írok ami nincs is az is jó miért?

Itt a kod:

<?php

$mysqli = new mysqli('localhost', 'root', 'asd' , 'test');


if ($mysqli->connect_error) {

echo "Fail:".$mysqli->connect_error;

}


$name = $_GET["name"];


if ($result = $mysqli->query("SELECT name, email FROM test_mysql WHERE name = ('$name')")) {

echo "ÜDV ".$name;

}

else{

echo $name." NINCS engedélyed.";

}

$mysqli->close();

?>



2016. aug. 3. 14:00
 1/6 anonim ***** válasza:

A mysqli::query SELECT esetén egy mysqli_result objektumot ad vissza, így az if mindig igaz lesz (kivéve, ha valami hiba történt)


Tehát ha 0 ilyen sort talál, akkor is ez az objektum jön vissza.


Nézd meg a dokumentációt:

[link]


Egyébként nem kéne ellenprizetlenül a paraméterben kapott nevet hozzáfűzni az SQL lekérdezéshez, nézz utánna, hogy mi az az SQL injection.

2016. aug. 3. 14:13
Hasznos számodra ez a válasz?
 2/6 A kérdező kommentje:
ez hogy is néz ki kodban?
2016. aug. 3. 14:26
 3/6 anonim ***** válasza:

Régen MySQLi-ztem, tehát ezt úgy fejből valami.


[link]


Tehát ő lesz a kapott, ahogy mondja az 1. válaszoló.

Tehát, ha ebből hívod a fetch_assoc() metódust, akkor egy 2 dimenziójú tömböt kapsz a kapott táblával.


$result = $mysqli->query(...)

$array = $result->fetch_assoc();

echo $array[<sorId>][<oszlopneve>];


Pl.:

$result = $mysqli->query("SELECT alma, korte FROM noveny") // mondjuk 5 sort talált

$array = $result->fetch_assoc();

echo $array[0]["alma"], " ", $array[0]["korte"];

echo $array[1]["alma"], " ", $array[1]["korte"];

echo $array[2]["alma"], " ", $array[2]["korte"];

echo $array[3]["alma"], " ", $array[3]["korte"];

echo $array[4]["alma"], " ", $array[4]["korte"];


Persze ezt foreach-elheted és így tovább...

2016. aug. 3. 15:45
Hasznos számodra ez a válasz?
 4/6 A kérdező kommentje:

Én login systemet próbálok csinálni csak WHERE name = ('$name') nél mindig jó de miért valaki nem tudná a kodomba írni

elöre is köszönöm

2016. aug. 3. 16:06
 5/6 anonim ***** válasza:

[link]


#3, a fetch_assoc() csak egy sort (a következőt) adja vissza a result setből, nem az egész setet. A fetch_all működik úgy, ahogy írod. (Persze az is csak akkor, ha megfelelően paraméterezed.)


Kérdező:

Leírták már, mi a gond. Mit vársz? Helyetted írják meg az egészet? Akkor már miért nem keresel egy kész megoldást?


Egyébként még egyszer:

$result = $mysqli->query("SELECT name, email FROM test_mysql WHERE name = ('$name')");


Itt escape-elni kell a $name értékét. A fent említett SQL injectionnek nézz utána! (Házi feladat...)


Ha ez megvan, akkor két esetben van probléma:

1. a $result értéke FALSE

Ez akkor van, ha valamilyen hiba van a SELECT-ben (SQL hiba, nem létezik a tábla, mező, stb.).


2. SQL tekintetében rendben van, de nincs olyan nevű rekord a táblában

Ebben az esetben a $result értéke NEM FALSE, hanem egy mysqli_result objektum. Ezt meg kell vizsgálni:

Például lekérdezed a talált rekordok számát: $result->num_rows

Ha ez 0, akkor nincs olyan felhasználó, különben van.

2016. aug. 3. 16:39
Hasznos számodra ez a válasz?
 6/6 A kérdező kommentje:
köszönöm sikerült :D
2016. aug. 4. 06:08

Kapcsolódó kérdések:




Minden jog fenntartva © 2025, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu

A weboldalon megjelenő anyagok nem minősülnek szerkesztői tartalomnak, előzetes ellenőrzésen nem esnek át, az üzemeltető véleményét nem tükrözik.
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!