 |
PHP sql insert into hiba


 Sziasztok,
egy rekordot szeretnék űrlappal hozzáadni sql táblához.
Már a php megnyitásakor hibát jelez.
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 ''szemely_gumi' () values NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL, NULL )' at line 1
Ha beírom az adatokat és rákattintok a gomra akkor:
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 ''szemely_gumi' () values 'Használt', 'Téli', '165', '55', '14', 'T', '6', 'Sem' at line 1
<form name="insert" method="POST"> <br> <h3>Új sor/rekord hozzáadása</h3> <div class="adminsz"> <p>Új vagy használt?</p> </div> <div class="adminbox"> <input type="text" name="uj_haszn" size=10 maxLength=8 class="a"> </div> <div class="adminsz"> <p>Idény</p> </div> <div class="adminbox"> <input type="text" name="ideny" size=10 maxLength=40 class="a"> </div> <div class="adminsz"> <p>Szélesség</p> </div> <div class="adminbox"> <input type="text" name="szeles" size=10 maxLength=3 class="a"> </div> <div class="adminsz"> <p>Magasság</p> </div> <div class="adminbox"> <input type="text" name="magas" size=10 maxLength=2 class="a"> </div> <div class="adminsz"> <p>Átmérő</p> </div> <div class="adminbox"> <input type="text" name="atmero" size=10 maxLength=2 class="a"> </div> <div class="adminsz"> <p>Sebindex</p> </div> <div class="adminbox"> <input type="text" name="sebindex" size=10 maxLength=40 class="a"> </div> <div class="adminsz"> <p>Mélység</p> </div> <div class="adminbox"> <input type="text" name="melyseg" size=10 maxLength=3 class="a"> </div> <div class="adminsz"> <p>Márka</p> </div> <div class="adminbox"> <input type="text" name="marka" size=10 maxLength=15 class="a"> </div> <div class="adminsz"> <p>Bruttó</p> </div> <div class="adminbox"> <input type="text" name="brutto" size=10 maxLength=15 class="a"> </div> <div class="adminsz"> </div> <div class="adminbox"> <input type="submit" name="ok" value="Mentés" size="90px"> </div> </form> <?php mysql_connect("sql","akarmi2009","jelszo"); mysql_select_db("akarmi2009");
$uj_haszn = ($_POST['uj_haszn'] != '') ? ("'".$_POST['uj_haszn']."'") : 'NULL'; $ideny = ($_POST['ideny'] != '') ? ("'".$_POST['ideny']."'") : 'NULL'; $szeles = ($_POST['szeles'] != '') ? ("'".$_POST['szeles']."'") : 'NULL'; $magas = ($_POST['magas'] != '') ? ("'".$_POST['magas']."'") : 'NULL'; $atmero = ($_POST['atmero'] != '') ? ("'".$_POST['atmero']."'") : 'NULL'; $sebindex = ($_POST['sebindex'] != '') ? ("'".$_POST['sebindex']."'") : 'NULL'; $melyseg = ($_POST['melyseg'] != '') ? ("'".$_POST['melyseg']."'") : 'NULL'; $marka = ($_POST['marka'] != '') ? ("'".$_POST['marka']."'") : 'NULL'; $brutto = ($_POST['brutto'] != '') ? ("'".$_POST['brutto']."'") : 'NULL';
$sql = "INSERT INTO 'szemely_gumi' () values ".$uj_haszn.", ".$ideny.", ".$szeles.", ".$magas.", ".$atmero.", ".$sebindex.", ".$melyseg.", ".$marka.", ".$brutto." )"; $eredmeny = mysql_query($sql) or die(mysql_error()); while($sor=mysql_fetch_array($eredmeny)) { echo "<br>"; print("Az új sor elmentve."); }
mysql_close(); ?>
|
a tábla neveket nem kell ' jelek közé rakni
[szerk]
mégegy észrevétel
nem mindegy, hogy 'NULL' vagy NULL. az előbbi egy string, míg az utóbbi a tényleges null |
az insert-et nem fogod tudni feldolgozni mysql_fetch_ -el.
a () jjelet vedd ki, ha minden mezőt a megfelelő sorrendben töltesz. De amig kezdő vagy, mindig írd ki a mezőneveket ahogy
kell, mert 10 percen belül nem fogod tudni milyen mezők vannak a táblában. |
| neki a 'NULL' mint sztring kell ha SQL -be teszi bele, és nem a phpben a NULL mint üres. |
() jeleket kivettem, de minden maradt ugyanaz.
Ha a mysql_fetch_array nem jó akkor mit használjak helyette? |
insertnél simán mysql_query() elég hogy lefuttasd az insertedet.
utána ha megnézed a mysql_insert_id() -t, megkapod az elsődleges kulcs értékét, ha van a táblában.
amúgy a helyes szintaxis:
INSERT INTO `tablaneve` (`mezo1`,`mezo2`,`mezo3`,`datumido`) VALUES ('a', NULL ,4 , NOW() )
NULL - a null nem egy sztring ebben az esetben, hanem üres mezőt jelent.
NOW() pedig az aktuális dátumot és időt szúrja be.
és az INSERT be csak azokat a mezőket írd be amiket kiakarsz tölteni, vagy kötelező a kitöltésük.
Pl egy elsődleges kulcsnak ne te adj értéket, mert azt többnyire a MYSQL szerver határozza meg (AUTOINCREMENT).
nézd meg a példákat:
mysql_insert_id()
mysql_query() |
| és amúgy enisz találta meg a hibát, így övé a pont. |
Hát az ' jeleket kivettem a tábla elöl-mögül, a NULL-ra azt írtad, hogy jó ' jelekkel.
De még mindig ugyanzazon hibákat produkálja. |
mysql_query($sql) or die(mysql_error() . $sql);
és mindenre fény derül..
másold is be ide.
|
Az insertben a values után az értékek felsorolását () közé kell tenni.
Azaz:
insert into szemely_gumi values ('Használt', 'Téli', '165', '55', '14', 'T', '6');
Az értékek számának ugyanannyinak kell lennie, mint az oszlopok száma a táblában, és a sorrend is fontos! |
az insert-et nem fogod tudni feldolgozni mysql_fetch_ -el.
a () jjelet vedd ki, ha minden mezőt a megfelelő sorrendben töltesz. De amig kezdő vagy, mindig írd ki a mezőneveket ahogy
kell, mert 10 percen belül nem fogod tudni milyen mezők vannak a táblában. <---egyrészt ez igaz. Másrészt a Form hova posztol???
<form name="insert" method="POST"> <--mert szépen dolgozod fel a posztokat, de szerintem meg sem kapja.
<form name="insert" method="POST" action="ide jön a php ami feldolgoz, lehet önmaga is pl. akarmi.php">
Másrészt. A mysqlbe írogatás előtt minimum figyelj arra, hogy létezik-e egyáltalán poszt mert ha nem, akkor minden megnyitáskor beletölt egy üres részt az sql be.
ezt megteheted if(isset($_POST)){mysqlbe írás stb.}
|
a form ugyanoda posztol ahol épp áll ha nincs action definiálva.
Még akkor is ha üresen hagyja.
off:
és szerintem ő lenne a legboldogabb ha akár üres értékekkel is de működne ez a beírás  |
| Hmm, ezt jó tudni. Bocsi, akkor nem szóltam. :) (Bár akkor is illik megadni az actiont:P) |
Tessék, itt egy példa, ez alapján csináld a tiedet is. Ez működik.
Mysql tábla felépítése.
int id auto_increment és primary key
message text
author text
date datetime
$message = $_POST['message'];
$title = $_POST['title'];
$author = $_POST['author'];
query = "INSERT INTO hirek (message, date) VALUES('$message','$regdate')";
mysql_query($query) or print"Nem jó...";
mysql_close();
ebben az esetben a hirek táblában csak a message és a date részbe írsz bele. Ha mindent be akarnék írni akkor peddig így kell.
query = "INSERT INTO hirek
VALUES ('','$message','$author','$regdate')";
mysql_query($query) or print"Nem jó...";
mysql_close();
Az első azért üres string mert az az id helye (mivel az az első mező a táblában) és az auto increment ergo majd az sql ad neki értéket. A többit pedig megfelelő sorrendben beírod.
|
Hoppá, kimaradt:
$date1=date ("Y-m-d");
$date2 = date ("H:i:s");
$regdate =$date1." ".$date2;
Ez a rész az $author=$_POST['author']; után következik. |
| Mégvalami: a query="..." nél $query...csak lemaradt a $. Bocsi |
ha arra adod a fejed, hogy full kódot küldesz, lehetőleg működjön 
-amiben nincsenek reserved mezőnevek ( date pont ilyen )
-SQL ellen védett
kihasználja a MYSQL előnyeit ( NOW() függvénnyel is megadhatod az aktuális dátumot/időt), vagy netán automatán képződik az idő
-hibakezelésre is felhívja a figyelmet, mysql_error() / mysql_errno()
-valamennyire kapcsolódik a kérdésben feltett táblához
Mert ide tanulni jönnek többnyire olyanok akik innen merítenek ötleteket, + a kérdezők pedig meg se nézik mit küldesz, átmásolja és azt látja valami nagyon nem megy. |
| Én is tanulok még :) Csak bizonyos dolgokat azért én is meg tudok írni. Ez a kód működni működik, mert sok helyen használom. Én is néztem már innen sokmindent. Kopiztam a kódot majd átböngésztem sorrol sorra. Aki erre nem veszi a fáradságot az...Ez egy példa volt csak. Ternészetesen lehet jobban védeni, átnevezni + feltételt írni bele. A lekérdezés viszont jó. |
Nem megy! Ezt írja ki:
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 ''Új', 'Téli', '185', '70', '14', 'T', '8', 'Semperit', '15000' )' at line 1INSERT INTO szemely_gumi (uj_haszn, ideny, szeles, magas, atmero, sebindex, melyseg, marka, brutto) values 'Új', 'Téli', '185', '70', '14', 'T', '8', 'Semperit', '15000' )
<form name="insert" method="POST"> <br> <h3>Új sor/rekord hozzáadása</h3> <div class="adminsz"> <p>Új vagy használt?</p> </div> <div class="adminbox"> <input type="text" name="uj_haszn" size=10 maxLength=8 class="a"> </div> <div class="adminsz"> <p>Idény</p> </div> <div class="adminbox"> <input type="text" name="ideny" size=10 maxLength=40 class="a"> </div> <div class="adminsz"> <p>Szélesség</p> </div> <div class="adminbox"> <input type="text" name="szeles" size=10 maxLength=3 class="a"> </div> <div class="adminsz"> <p>Magasság</p> </div> <div class="adminbox"> <input type="text" name="magas" size=10 maxLength=2 class="a"> </div> <div class="adminsz"> <p>Átmérő</p> </div> <div class="adminbox"> <input type="text" name="atmero" size=10 maxLength=2 class="a"> </div> <div class="adminsz"> <p>Sebindex</p> </div> <div class="adminbox"> <input type="text" name="sebindex" size=10 maxLength=40 class="a"> </div> <div class="adminsz"> <p>Mélység</p> </div> <div class="adminbox"> <input type="text" name="melyseg" size=10 maxLength=3 class="a"> </div> <div class="adminsz"> <p>Márka</p> </div> <div class="adminbox"> <input type="text" name="marka" size=10 maxLength=15 class="a"> </div> <div class="adminsz"> <p>Bruttó</p> </div> <div class="adminbox"> <input type="text" name="brutto" size=10 maxLength=15 class="a"> </div> <div class="adminsz"> </div> <div class="adminbox"> <input type="submit" name="ok" value="Mentés" size="90px"> </div> </form> <?php mysql_connect("sql","akarmi2009","jelszo"); mysql_select_db("akarmi2009");
$uj_haszn = ($_POST['uj_haszn'] != '') ? ("'".$_POST['uj_haszn']."'") : 'NULL'; $ideny = ($_POST['ideny'] != '') ? ("'".$_POST['ideny']."'") : 'NULL'; $szeles = ($_POST['szeles'] != '') ? ("'".$_POST['szeles']."'") : 'NULL'; $magas = ($_POST['magas'] != '') ? ("'".$_POST['magas']."'") : 'NULL'; $atmero = ($_POST['atmero'] != '') ? ("'".$_POST['atmero']."'") : 'NULL'; $sebindex = ($_POST['sebindex'] != '') ? ("'".$_POST['sebindex']."'") : 'NULL'; $melyseg = ($_POST['melyseg'] != '') ? ("'".$_POST['melyseg']."'") : 'NULL'; $marka = ($_POST['marka'] != '') ? ("'".$_POST['marka']."'") : 'NULL'; $brutto = ($_POST['brutto'] != '') ? ("'".$_POST['brutto']."'") : 'NULL';
$sql = "INSERT INTO szemely_gumi (uj_haszn, ideny, szeles, magas, atmero, sebindex, melyseg, marka, brutto) values ".$uj_haszn.", ".$ideny.", ".$szeles.", ".$magas.", ".$atmero.", ".$sebindex.", ".$melyseg.", ".$marka.", ".$brutto." )"; mysql_query($sql) or die(mysql_error().$sql);
printf ("Utoljára mentett rekord: %d\n", mysql_insert_id());
mysql_close(); ?>
|
| Rossz formátumot használok valamelyik mezőnél? |
a values után is kell zárójel:
values (érték1,érték2.....)
$sql = "INSERT INTO szemely_gumi (uj_haszn, ideny, szeles, magas, atmero, sebindex, melyseg, marka, brutto) values (".$uj_haszn.", ".$ideny.", ".$szeles.", ".$magas.", ".$atmero.", ".$sebindex.", ".$melyseg.", ".$marka.", ".$brutto.")"; mysql_query($sql) or die(mysql_error().$sql);
Először mindig írd meg a lekérdezést, konkrét értékekkel,
és amikor működik, akkor helyettesítsd be a változóneveket. |
Köszönet és hála mindenkinek, Aetherious-nak is a tanító célzatú hozzászólásaiért.
Megpróbálok tanulni ezekből, minden jót.
Üdv |
felesleges ".$változó." ... " . $valtozo ." " módon SQL -t írni.
$sql="insert into table (mezo1,mezo2) VALUES ('$value1',$value2)";
és máris átláthatóbb a kódod. |
|
| |
| RSS források |
 | - | Hírek |  | - | Cikkek |  | - | Fórumok |  | - | Állás/munka |
|
| Top pontgyűjtők |
| » | Micu | 1.030 | | » | Interlock | 280 | | » | mezofi | 150 | | » | Pitta_ | 100 | | » | Frostech0 | 100 | | » | szbzs.2 | 100 | | » | Hack | 100 | | » | Riha | 60 | | » | Akhiles | 50 | | » | mrchandra | 50 |  |  |  |
|
| Top wikieditorok |
| » | Sting | | » | Doi | | » | FlamingClaw | | » | Argathron | | » | Csaboka2 | | » | Vodka | | » | Joexy | | » | Ivn | | » | Balucinho | | » | Kelemzol |  |  |  | » ugrás a wikire |
|
|