ugrás a tartalomhoz

MySQL parancssor PHP-n

arcadas · 2008. Jan. 29. (K), 12.34
Üdv, egy egyszerű mysql parancssort csináltam php felületen, amivel van egy kis gondom, mint a képen látható, ha értéknek szöveget adok meg akkor nem fogadja el, mint pl a pass-nál, számokkal viszont gond nélkül működik.
Mi közé kell írni a szöveget, hogy működjön? Próbáltam már idézőjelekkel, per jelekkel, de sehogy nem akarja elfogadni?



A kód egy része:

if(isset($_POST['mysqlcom'])){ 
		$sql="".$_POST['command1']."";
		echo "<br>";
		echo $_POST['command1'];
		echo "<br><br>";
		$query=mysql_query($sql) or die(mysql_error());
		echo $query;
	}
 
1

SQL?

janoszen · 2008. Jan. 29. (K), 12.37
Nem a PHP a hibás, hanem Te. A megő értékét illik macskaköröm közé rakni. Így nem csoda, hogy nem működik.
2

idézőjellel

arcadas · 2008. Jan. 29. (K), 13.30
Nem mondtam, hogy a PHP a hibás, csak, hogy nem tudom mi a gond.
Itt a kép ha idézőjelek közé teszem a pass értékét, először "jelszava" után 'jelszava'. De így sem működik, ha per jelet teszek eléjük úgysem. Vagy nem az értéket (jelszava) kell idézőjelek közé tenni?

3

magic quotes

gex · 2008. Jan. 29. (K), 13.35
be van kapcsolva a fent említett dolog. nem ajánlott, kapcsold ki te is.
4

szerintem

DsA · 2008. Jan. 29. (K), 14.06
szerintem probáld meg így:
UPDATE `memlist` SET `pass` WHERE `id`='7'
nem biztos h sokat segít de talán és természetesen amikor elküldöt ezt az adatot akkor tedd "" közé az egész parancsot...
Remélem segítettem... : )
5

nem jo

arcadas · 2008. Jan. 29. (K), 15.23
dex: a linkelt oldalon található scriptet lefutattam a honlapon, de nem segített.

Ezeket már próbáltam és nem jó:
update tabla set pass=jelszo where id=1
update tabla set pass='jelszo' where id=1
update tabla set pass="jelszo" where id=1
update tabla set pass='jelszo' where id='1'
update tabla set pass="jelszo" where id="1"

Az egész parancsot azért nem rakom idézőjelek közé, mert az már a kódban benne van, mint látható feljebb.
(Csak akkor kapok hiba üzenetet, ha pass-nek szöveget adok, ha számot, akkor nincs gond (pass=1234 <-ez jó)).
6

Bemenet...

janoszen · 2008. Jan. 29. (K), 17.38
Szerintem, irasd ki a query-t amit lefuttatsz. Lehet hogy érdekes dolgot fogsz látni benne.

De komolyan, szerintem egy kicsit foglalkozz intenzívebben a PHP lelki világával, mielőtt rést nyitsz a szervereden. Vagy tégy föl egy PHPMyAdmin-t.
7

szerver

arcadas · 2008. Jan. 30. (Sze), 17.12
Az itthoni gépemen tökéletesen működik ez a parancs, csak a freeweb-re feltett oldalon írja ezt a hibát, tehát nem hiszem, hogy rossz kódot írtam. Annyira viszont nem vagyok jó programozó, hogy ilyen dolgokat tudjak, ezért kérek itt segítséget.

A query-t kiirattam, a fenti hozzászólásaimban ott van, de én nem tudok vele mit kezdeni.
8

már megírtam a megoldást

gex · 2008. Jan. 30. (Sze), 17.24
be van kapcsolva a freeweben a magic quotes. ennyi.

már megírtam a megoldást, de akkor most el is magyarázom. 3 megoldás van a php.net-en:
  • php.ini beállítás. nem férsz hozzá freeweben.
  • csinálsz egy .htaccess nevű fájlt és beleírod: php_flag magic_quotes_gpc Off. ezt a fájlt bemásolod abba a könyvtárba ahol a php fájlod van, vagy fölé.
  • bemásolod a php kódot a php fájlod elejébe. a runtime nem azt jelenti hogy le kell futtatni, hanem hogy bele kell rakni a fájlodba.

sok sikert!

szerk: a teendők vagy-gyal vannak elválasztva nem és-sel.

szerk: ha egyiket sem tudod megcsinálni, akkor a mysql_query(stripslashes($_POST['mysqlcom'])); is segít, de én inkább azt ajánlom, hogy értsd meg mi az a magic quotes, hogyan működik és mit kell tenni ellene. valamint a $sql="".$_POST['command1'].""; egy tök felesleges művelet, ezt már az első hozzászólásomban is meg akartam írni.
9

köszönöm

arcadas · 2008. Jan. 31. (Cs), 02.10
Köszönöm a segítséget a harmadik verzióddal megoldodott a probléma, bár azt nem értem, hogy a $sql="".$_POST['command1'].""; sor miért felesleges.
10

üres sztring

gex · 2008. Jan. 31. (Cs), 11.20
a "" egy üres sztringet ad. ugyanúgy, mint a '' is. nem ad hozzá semmit a $_POST['command']-hoz. amit te szerettél volna az:

$sql = "'" . $_POST['command'] . "'";
// vagy
$sql = '"' . $_POST['command'] . '"';
de mint látod nincs rá szükség. ha így küldenéd el a mysql-nek a parancsot azt hinné, hogy egy darabt sztringet adsz át neki, ami szintaktikai hibát adna.

(vagy vak vagyok és nem látom a hibát, vagy tényleg hülyén színez a colorer)