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.)
- 1299 megtekintés
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 .......
- A hozzászóláshoz be kell jelentkezni
1: Írtam, hogy IN$ERT=INSERT, csak ha úgy írom be ide, akkor nem engedi beküldeni a postot.
Próbáld csak ki, a fenti queryt postold be ide a fórumba, INSERT-tel. :)
2: A postolt dolgok tipikusan olyanok, amiket nem kell ellenőrizni. Nem fejtem ki, hogy értem, hosszú lenne.
- A hozzászóláshoz be kell jelentkezni
Pedig engem például kifejezett érdekelne, hogy miért nem kell ellenőrizned a $_POST tömbben levő elemeket.
A mysql a táblaneveket `-el szereti.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
A csatlakozás handlere opcionális, ha utánaolvasol.
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
' != `
t
- A hozzászóláshoz be kell jelentkezni
'".date("Y-m-d H:i:s")."' ehelyett siman mehet egy NOW(), `tablanev` es nem 'tablanev'.
- A hozzászóláshoz be kell jelentkezni
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 hozzászóláshoz be kell jelentkezni
Kösz, már majdnem jó. Csak a NOW() nem hajlandó működni. 0000-00-00 00:00:00-t adott vissza... Ez lehet a beállításaim között keresendő hiba? Manualban megnéztem, elvileg SYSDATE is ezt adja vissza, de az sem működik...
Ja a mező típuse DATETIME...
- A hozzászóláshoz be kell jelentkezni
Hogy nez ki most a queryd? Ugy, ahogy a fenti? Vigyazz ez a mysql now funkcioja, nem a php-e.
- A hozzászóláshoz be kell jelentkezni
mysql_query("IN$ERT INTO translate (date,user,flag,value) VALUES ('NOW()','".$_SESSION['user']."','".$_POST["flag".$i]."','".$_POST['value'.$i]."')");
- A hozzászóláshoz be kell jelentkezni
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]."')");
- A hozzászóláshoz be kell jelentkezni
Miert is?
- A hozzászóláshoz be kell jelentkezni
mit miert is?
azert, mert a now() mysql fuggveny, nem pedig php.
t
- A hozzászóláshoz be kell jelentkezni
Arra szolt a miert, hogy miert kene a php date() fuggvenyet hasznalni ahhoz, hogy biztosan jo formatumot kapjon, miert nem jo erre a mysql now() fuggvenye.
"Ha biztosan jó formátumot szeretnél, akkor szerintem írd meg PHP-ban..."
- A hozzászóláshoz be kell jelentkezni
Váá, igazad van. Valamiért ez elkerülte a figyelmemet... Pedíg ez eléggé evidens dolog... :)
Köszönöm szépen a segítséget, most már működnek a dolgok...
- A hozzászóláshoz be kell jelentkezni
Nem kell aposztrof a now() köré... .
- A hozzászóláshoz be kell jelentkezni
en azt mondom, suszter maradjon a kaptafanal.
t
- A hozzászóláshoz be kell jelentkezni
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...
- A hozzászóláshoz be kell jelentkezni
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.
- A hozzászóláshoz be kell jelentkezni
én egy DELETE-t is megkuksiznék...
- A hozzászóláshoz be kell jelentkezni