POST és mysql_query

Váá, falra mászok tőle.

Szóval van egy mysql_querym, ami így néz ki:


mysql_query("IN$ERT INTO 'translate' ('date','user','flag','value') VALUES
('".date("Y-m-d H:i:s")."','".$_SESSION['user']."','".$_POST['flag'.$i]."','".$_POST['value'.$i]."')");

(Az IN$ERT helyett INSERT van, csak a drupal nem fogadja el úgy. Illetve az egész egy sort alkot, csak nem akarom szétcseszni az oldal designját.)

De amikor fut, dob egy hátast. mysql_error:

You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near ''translate' ('date','user','flag','value') VALUES ('2007-02-10 22:36:23','B@T','' at line 1

Ugyanakkor ha alá beírom, hogy print($_POST['flag'.$i]) akkor kiírja szépen a változó tartalmát.

Próbáltam úgy is, hogy a $_POST['flag'.$i]-t és $_POST['value'.$i]-t helyettesítettem 1-1 változóval, és a változóknak a query elött adtam meg értéknek a postolt értéket, de az eredmény ugyan ez volt.

Egyébként ez egy ciklusban van, és a flag0, value0, flag1, value1 mindíg rendelkezik értékkel. (Pontosabban egy if ellenőrzi, hogy van-e értéke.)

Hozzászólások

esetleg, ha az IN$ERT-et INSERT-re cserélnéd, az sokat segítene. de ettől még post dolgot ellenőrzés nélkül betolni, háááááááát .......

Szia!

Szvsz

('date','user','flag','value')

helyett

(date, user, flag, value)

kellene... , legalábbis az én mysql- em hibát dob az előbbire.

Amúgy szerintem ebben van több hiba is. Pl.

 '".date("Y-m-d H:i:s")."' 

- nál a '' közötti részek nem fognak "feloldódni, ott közötte nem dátum lesz, hanem az a string, ami benne van. Próbáld meg azt, hogy előtte mondjuk egy $sql változóban létrehozod a query- t, és kiiratod, hogy azt kaptad- e, ami Neked kell. Azt csak bemásolod mysql parancssorába, és úgy könnyebb a hibakezelés. Ha ez megoldódik, akkor még hiányozni fog a csatlakozás változója, mert ha jól bogarásztam ki, az hiányzik a végéről.

Röviden valahogy így könnyen nyomonkövethető:


$sql = "update (a, b) values ('alma', 'korte')";
mysql_query($sql, $sql_csatlakozas)

Persze ez csak privátvélemény.

Szerintem meg vedd ki az idézőjeleket a tábla neve körül. Én már volt hogy ezzel szívtam, és amúgy a hibaüzetet is arra mutat. Vmi olyasmi rémlik, hogy a "for the right syntax to use near" utáni szöveg előtt van a hiba. Ma én is benéztem párat, igaz én PgSQL-t használok.

'".date("Y-m-d H:i:s")."' ehelyett siman mehet egy NOW(), `tablanev` es nem 'tablanev'.

Tehát:

mysql_query("IN$ERT INTO translate (date, user, flag, value) VALUES
(NOW(), '" . $_SESSION['user'] . "', '" . $_POST['flag'.$i] . "', '" . $_POST['value'.$i] . "')");

Mert a DATETIME, DATE, TIME és TIMESTAMP típusú mezőkhöz NOW() pont jó. A mező és táblanevek escapeeléséhez meg ` kell, a '-től string lesz.

--
"SzAM-7 -es, tudjátok amivel a Mirage-okat szokták lelőni" - Robi.

A 'NOW()'-t vedd ki az idézőjelek közül. Függvényként működik, így meg azt hiszi hogy szöveget akarsz bevinni.
Ha biztosan jó formátumot szeretnél, akkor szerintem írd meg PHP-ban, majd tedd bele valahogy így:

mysql_query("IN$ERT INTO translate (date,user,flag,value) VALUES (".date('Y-m-d H:i:s').", '".$_SESSION['user']."', '".$_POST["flag".$i]."', '".$_POST['value'.$i]."')");

en azt mondom, suszter maradjon a kaptafanal.

t

Igen, ha php-hez nem szeretnék mysql-t használni, nem is lenne problémám. Mert html, javascript, css, php aránylag jól megy. Viszont mysql egy külön világ. Az csak olyan szinten megy, hogy query-ket phpmyadmin-ból lopom, és alakítom át ahogy használni szeretném... Ez esetben nem vált be a technika...

Ha valamelyes meg akarod tanulni, szerintem egyszer szánj rá másfél- két órát, indíts egy mysql promptot, és csinálj végig egy tutorialt, legalábbis az elejét. Nézd meg, hogy milyen tulajdonságai vannak a selectnek, insertnek, updatenek, elsőre más nem is nagyon kell szvsz.