Új hozzászólás Aktív témák
-
Lacces
őstag
Szia, Nem tudom, hogy mit használsz (de ha jól láttam mysqli) PDO vagy Mysqli, de írd be azt a keresőbe amit használsz, és egy 'example' szót melléje és nézd meg őket, hátha az úgy jobban segít.
De itt a csatlakozással van a gond. Tudsz az adatbázishoz kapcsolódni (terminál, vagy a Windows parancssoron) keresztül? De gondolom igen.
[ Szerkesztve ]
-
-
Lacces
őstag
mysql_query ("DELETE FROM mozgastetel WHERE mozgastetel_id=". mysql_real_escape_string($_GET['id'])) or die (mysql_error());
én ilyesmivel próbálkoznék: mysql_query("DELETE FROM `mozgastetel` WHERE `mozgastetel_id`='".$_GET['id']."' ");
Csak így szimplán. használva a ` és ' jeleket. Így talán nem zavarodik bele a mysql sem, lehet phpmyadmin-ban is tesztelni kellene a query-t amit írsz hogy ott működik-e... Ennyit tudok segíteni. -
KKope
tag
válasz Sk8erPeter #11405 üzenetére
<?php
$conn = mysql_connect("localhost" , "root" , "jelszó")or die(mysql_error());
mysql_select_db(webraktar);
?> -
Sk8erPeter
nagyúr
Nem ártana, ha a webraktar egy string lenne.
Egyébként hogy elkerüld a parákat, még ezt is javítsd:
mysql_query("DELETE FROM mozgastetel WHERE mozgastetel_id=" . mysql_real_escape_string($_GET['id'])) or die(mysql_error());
erre
mysql_query("DELETE FROM mozgastetel WHERE mozgastetel_id='" . mysql_real_escape_string($_GET['id'])."'") or die(mysql_error());
Gyakorlati példa:
ha a $_GET['id'] egyenlő ezzel: asdasd
DELETE FROM mozgastetel WHERE mozgastetel_id=asdasd
helyett ez lesz:
DELETE FROM mozgastetel WHERE mozgastetel_id='asdasd'Így meg nem fog legalább szintaktikai para miatt sírni a MySQL.
Ahogy a többiek mondták, szokj rá még időben a PDO-ra. (Mármint minimumként, aztán jöhet egy ORM később.)
Szerk:
most látom, Lacces is így escape-elte.
A magyarázat meg itt van, hogy miért jó így.[ Szerkesztve ]
Sk8erPeter
-
Soak
veterán
Direkt írtam neked az előbb, hogy a prepared statementeket használj (mondjuk nem reagáltál rá semmit ) , mert így még mindig elfogod felejteni escapelni a dolgokat, plusz ha kezdő vagy akkor legalább a jó módszert tanulod meg és nem kell 2 hónap mulva átállni/átírni mindent .
-
válasz Sk8erPeter #11390 üzenetére
PHP 5.3 előtti?
-
KKope
tag
válasz Sk8erPeter #11407 üzenetére
Péter neked is köszönöm! Sokat tanulok tőletek!
-
Sk8erPeter
nagyúr
válasz Peter Kiss #11410 üzenetére
Hali! Igen, konkrétan 5.2.17-es verzió.
Lehet valami bug ebben a verzióban, vagy miért?
Egyébként teljesen jogos a kérdés, ezt elfelejtettem mondani, localhoston pedig 5.3.8 van fent.(#11411) KKope
szívesen![ Szerkesztve ]
Sk8erPeter
-
válasz Sk8erPeter #11413 üzenetére
5.3 alatt mondhatni, hogy nincs normális GC, ezért pl. a self references (internal handler) megöli, mert nem képes felszabadítani semmilyen memóriát, pl. a tiéd lehet, hogy elmenne 1 GB-ig is. Válts PHP verziót, minden megoldódik.
-
Lacces
őstag
Tipp, nálam bevált az elején:
Amikor bármilyen lekérdezéset csináltam, akkor először a phpmyadmin-ban csináltam meg, ott mindig rinyált a mysql ha valami nem volt jó... és ha jó volt a kód, akkor szimplán csak kimásoltam, aztán meg csak kiegészítettem a php kódokkal.
Aztán a végén már hozzászoksz és ebből nem lesz baj. Meg így fel lehet fogni, hogy mit miért ír ki...Másik, én nem tudom, hogy a többiek hogy vannak vele, de inkább használnék mysqli-t vagy pdo-t. Ha jól láttam anno, ezt a sima mysql-es dolgot a php.net sem ajánlja. Link itt.
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz Peter Kiss #11415 üzenetére
Huhh, köszi! Ezekre még nem gondoltam, de jó gondolatmenet.
Az a gáz, hogy az éles szerveren ez a verzió adott, és nem úgy néz ki, hogy váltanak. Akkor lehet, hogy megpróbálom rábeszélni a megrendelőt a szolgáltatóváltásra, bár nem hiszem, hogy egykönnyen belemegy... a korábban linkelt szolgáltató árai elég kedvezőek egy 2 GB-os csomagra, most épp 5760 Ft-ot fizet évente ennyiért, szóval ez elég jó ár. Mondjuk azt nézem, hogy Tárhelyparknál jelenleg 1 GB 3900 Ft-ért kapható. Bár tény, még mindig előbbi jön ki arányaiban olcsóbbra.Egyébként Te is tapasztaltál már korábban valamelyik program flow-nál ilyen jellegű problémát, hogy ez így kapásból eszedbe jutott?
[ Szerkesztve ]
Sk8erPeter
-
válasz Sk8erPeter #11417 üzenetére
Ezt csak tudom. 5.3 alatt nem nyúlok PHP-hoz.
-
KKope
tag
válasz Lacces #11416 üzenetére
Hallod ezt nem hiszem el.
Ha így használom:
mysql_query("DELETE FROM mozgastetel WHERE mozgastetel_id='" . mysql_real_escape_string($_GET['id'])."'") or die(mysql_error());Akkor az eredmény: Access denied for user ''@'localhost' (using password: NO)
Ha kiveszem az or die(mysql_error()) akkor meg lefut a lekérdezés. Bár a sort továbbra sem törli ki
Ahogy átadom a kódot az helyes? <td><?php echo "<a href=\"inc/teteltorles.php?id=" . $sor['mozgastetel_id'] . "\">Törlés</a>";?></td>
-
CSorBA
őstag
Logikus, a die azért van benne, ha nem sikerül, akkor "haljon meg/lépjen ki" és ne csináljon semmit. Ha ezt kiszeded, akkor nem lép ki, de nem is tud mit csinálni, mert már előtte van valami hiba
mondtam már, hogy ne csak táblázatba rakd, hanem vmi inputba is:
írd át azt a sort erre:
<td><?php echo "<input type=\"hidden\" name=\"mozgastetel\" value=\"" . $sor['mozgastetel_id'] . "\"/><a href=\"inc/teteltorles.php?id=" . $sor['mozgastetel_id'] . "\">Törlés</a>";?></td>
De ebbe a ronda kódba már kezdek belezavarodni, szóval inkább erre:
<td><input type="hidden" name="mozgastetel" value="<?=$sor['mozgastetel_id']?>" /><a href="inc/teteltorles.php?id=<?=$sor['mozgastetel_id']?>">Törlés</a></td>
[ Szerkesztve ]
-
Sk8erPeter
nagyúr
válasz Peter Kiss #11418 üzenetére
Hmm, köszönöm, ez hasznos infó volt, elgondolkodtató, simán lehet tényleg a normális GC hiánya.
Akkor érdemes eltöprengeni a szolgáltatóváltáson, oda, ahol újabb PHP-verzió van, mert a Drupal tényleg igen erőforrás-igényes, tehát sok hasonló probléma jelentkezhet még, ha nem váltunk időben.Sk8erPeter
-
-
Sk8erPeter
nagyúr
-
RootRulez
félisten
Sziasztok!
Anno csináltunk egy php fájlt, ami egy txt-ből kiválaszt egy sort, annak a tatlmát megnyitja a böngészővel és törli a sort a txt-ből.
Na most ez megy a saját szerveremen, de most egy uw szerveren, Fatal Errort ír.
Egy olyan sor nem tetszik neki, hogy file_put_contents("linkek.txt", implode("\n", $linkek);
Fatal error: Call to undefined function: file_put_contents()
Mi lehet a gáz, lehet az uw szervere nem támogatja ezt a parancsot vagy máshogy kéne megírni?
Köszi: RR
═════════════════════════════════════════
-
CSorBA
őstag
válasz Peter Kiss #11424 üzenetére
Azt nem is néztem. Igazából erőm sincs az egészet nézni
-
CSorBA
őstag
válasz RootRulez #11426 üzenetére
Elsőnek nézd meg, hogy milyen php verzió fut. Csinálj egy fájlt ezzel a tartalommal, majd futtasd:
<?php phpinfo();
Lehet még 4-es php fut, azon pedig ez a funkció nem támogatott. Nekem mintha úgy rémlene, hogy lehet változtatni vmi admin menüben, hogy melyik php fusson. Bár erre nem esküdök meg, régen láttam uw-s oldalt.
-
RootRulez
félisten
válasz Sk8erPeter #11431 üzenetére
De igen, én ott vagyok, ezt a mókolást cimbinek csináltam volna.
Tudtok egy ingyenes tárhelyet, ahol működik ez a file_put_contents()
═════════════════════════════════════════
-
Speeedfire
nagyúr
válasz Sk8erPeter #11407 üzenetére
Az ID általában egy szám, amit sql-ben nem kell sztingként kezelni. Így szerintem teljesen felesleges az aposztróf oda.
RootRulez: Regeljen godaddy-nél domaint és kap hozzá tárhelyet is.[ Szerkesztve ]
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Sk8erPeter
nagyúr
válasz Speeedfire #11434 üzenetére
"általában"...
És ha épp nem az "általában" esete forog fenn?
Ne felejtsd el, itt most query-konkatenálgatásokról beszélünk, nem prepared statementekről... (szerk.: ...sajnos)[ Szerkesztve ]
Sk8erPeter
-
Speeedfire
nagyúr
válasz Sk8erPeter #11435 üzenetére
Ha jól láttam az előző form-ot, akkor ott számok voltak a sorokban, mint azonosító.
De valóban, ahogy írod ha sztring akkor kell a ' jel.Viszont ettől még nem lesz megoldva a gondja, mert az adatkapcsolatnál van neki a gond.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Sk8erPeter
nagyúr
válasz Speeedfire #11436 üzenetére
Honnan tudod, hogy string lesz-e, vagy sem?
Eleve úgy kell megírni a kódot, hogy a rosszabbik esetre is fel legyen készítve.
pl. ha a delete.php?product_id=asdasdads címet hívod meg, és úgy használod, ahogy fentebb javasoltad, hogy ne használjunk aposztrófot/idézőjelet, akkor majd kapsz egy MySQL-errort az orcádba, szintaktikai hibára hivatkozva.Sk8erPeter
-
válasz Speeedfire #11434 üzenetére
Ha így van összeállítva a query, akkor az escape mit sem ér aposztróf nélkül, támadható lenne a cuccos.
Mondjuk számtípusoknál én cast-olnék vagy filtereznék, nem escape-elnék.
-
CSorBA
őstag
válasz Peter Kiss #11438 üzenetére
Mondjuk számtípusoknál én cast-olnék vagy filtereznék, nem escape-elnék.
+1
-
Speeedfire
nagyúr
válasz Peter Kiss #11438 üzenetére
Való igaz.
Fotóim https://fb.com/toth.szabolcs.art || IG: http://instagram.com/_tothszabolcs_ || Weblapom http://szabolcs-toth.com
-
Sk8erPeter
nagyúr
-
KKope
tag
Sziasztok,
Segítsetek abban, hogy tudok olyan kritériumot írni a kódba, hogy ha két azonos cikkszamot ne tudjak felvinni a táblába.
Maga a táblában lehet két azonos cikkszám, csak a jelenlegi feltöltésnél ne lehessen két azonost hozzáadni.
<?php
include("connect.php");
$lek="SELECT * FROM eszkoztorzs";
$eredmeny = mysql_query($lek) or die ("HIBA!");
if ( isset( $_POST["hozzaad"] )) {
$cikkszam = mysql_real_escape_string($_POST["cikkszam"]);
$bizonylatszam = mysql_real_escape_string($_POST["bizonylatszam"]);
$lek2= "INSERT INTO `mozgastetel` ( `cikkszam` , `bizonylatszam` ) VALUES ( '$cikkszam', '$bizonylatszam'); ";
mysql_query ( $lek2 ) or die();
header('Location: index.php?eszkozmozgas');
}
?> -
Soak
veterán
Ha jól értem amire gondolsz akkor http://php.net/manual/en/function.array-unique.php , ez kiszedi a dupla cikkszámot, de szó nélkül . Érdemes elolvasni a doksiját is, hogy mit tekint egyenlőnek.
Ezt miért csinálod :
$lek="SELECT * FROM eszkoztorzs";
$eredmeny = mysql_query($lek) or die ("HIBA!");?
-
KKope
tag
Ezt miért csinálod :
$lek="SELECT * FROM eszkoztorzs";
$eredmeny = mysql_query($lek) or die ("HIBA!");
?Az a FORM-on lévő legördülő menühöz kell.
Igazábol nekem az kell, hogy ha egynél többször hozzá akarom adni a cikkszámot akkor eldobja egy üzenettel. (pl: "ezt a cikkszámot már hozzáadtad!")
[ Szerkesztve ]
-
KKope
tag
válasz Sk8erPeter #11445 üzenetére
Említettem, hogy a hibakezelést a végére teszem. Lassan kész vagyok az oldalammal és utána nekiállok a hibakezelésnek.
Egyébként köszi, a helpet.
-
Soak
veterán
Akkor valami ilyesmivel kéne
SELECT cikkszam FROM mozgastetel WHERE cikkszám IN ( szerk: Persze hogy nem a létezőket írod ide, hanem azokat amiket épp be akarnak írni, bocs ) ,ha ez ad vissza valamit akkor tudod hogy már létezik és ki is tudod iratni a hibakezelőddel mivel visszadja a létezőket .
[ Szerkesztve ]
-
lakisoft
veterán
Zend Frameworkhöz létezik valami friss "tananyag" amiből szépen meg lehet tanulni a php alapokat is?
Új hozzászólás Aktív témák
- Melyik hordozható audiolejátszót (DAP, MP3, stb.) vegyem?
- MG topik
- SSD kibeszélő
- Samsung Galaxy S24 - nos, Exynos
- Milyen billentyűzetet vegyek?
- SkyShowtime
- Skoda, VW, Audi, Seat topik
- Samsung Galaxy S23 Ultra - non plus ultra
- A fociról könnyedén, egy baráti társaságban
- Fejhallgató erősítő és DAC topik
- További aktív témák...
- Több db HP Thunderbolt dock 230W G2 230W -os töltővel MONITORCENTER
- Philips Evnia 42M2N8900 Gamer Oled Monitor!42"/4k/138hz/0,1ms/Freesync-Gsync/HDMI 2.1/TypeC/Ambiglow
- -56% HP EliteBook 840 G8:i7 1165G7,16GB RAM,512GB NMVe SSD,Iris Xe,IR kam.+ujj.olv.,vil.MAGYAR bill.
- Monitortató plexi konzol több elérhető készletről MONITORCENTER
- -50% HP EliteBook 840 G8: i7 1165G7,32GB RAM,1TB NMVe SSD,Iris Xe,IR kam.+ujj.olv.,vil.MAGYAR bill.