A következő PHP függvény miért adja mindig vissza az adott mysql tábla összes elemét? Valami rossz?
function needfrom($need, $from, $key, $value)
{
$t = array();
$result = mysql_query("SELECT ".$need." FROM ".$from." WHERE ".$key." = ".$value);
if ($result)
{
while ($row = mysql_fetch_row($result))
{
$t[] = $row;
}
}
return $t;
}
1.: Fölösleges a $t hiszen a $row ugyanúgy tartalmazza a query eredményeket.
2.: valószínűleg azért az egészet adja vissza mert a return során az egész tömböt adja vissza nem csak a tömb adott elemét.
Megoldás:
function needfrom($need, $from, $key, $value, $tombelem)
{
$t = array();
$result = mysql_query("SELECT ".$need." FROM ".$from." WHERE ".$key." = ".$value);
if ($result)
{
while ($row = mysql_fetch_row($result))
{
$t[] = $row;
}
}
return $t[$tombelem];
}
Persze máshogy is lehet.
#1: ezt nem gondoltad át ugye?
Kedves kérdező!
Szép próbálkozás ilyen függvényeket írni, de ne fáraszd magad olyasmivel, amit már megcsináltak jobban, és egyszerűbben. Használj kész adatbázis class-t.
Ilyen pl a google megoldása az edb:
vagy a népszerű és sokoldalú ADOdb:
Ha szeretsz a kódban matatni, akkor inkább az edb-t javaslom, az olyan egyszerű, mint a bot, és a classt kiegészíteni saját speciális funkciókkal sem bonyolult.
Sok sikert!
Egyébként a függvényedben nincs hiba, legfeljebb nem túl biztonságos. Valószínűleg a megadott paraméterezés lesz a ludas.
Ami pedig a biztonságot illeti. Vannak védett szavak, amikre a mysql háklis(date, limit, stb). Ha ezek mezőnévként szerepelnek, célszerű a lekérdezésben a megfelelő aposztrófokat kitenni, mert a mysql kiakad különben. valahogy így:
$result = mysql_query("SELECT `".$need."` FROM `".$from."` WHERE `".$key."` = '".$value."'");
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!