Keresés
Hírlevél
 
Kiemelt témák
»Hogy viszonyul ehhez a család?
»Legjobb metodika emberi relációk tárolására
»A programozó hibája, hogy törik a programját?
»Jogosultság kezelés mezőszinten
Állás/munka
»Wordpress szakértőt keresünk
»Kamu álláshirdetők listája
»Front-end fejlesztő / Sitebuilder
»DataStore Developer
»PHP programozó, webfejlesztő munkát keres
» több téma
Tudástár
?Input mezőből visszakapott adat probléma
?HTML-ben a Flash átméretezés torzul
Eredeti mezőnevek lekérdezése
Oldalon keresés 8x írja ki az eredményt
?XML-ből sok szövegmező
TinyMCE és az ékezetek
?Rengeteg hasonló kép betöltése gyorsan (PHP)
Ékezetes kar. nem minden táblában jól
?Shelltreeview gond
Grafikon rajzolás probléma
?Onclick= php függvény
?Egyenes megrajzolása
?Access-ből adott xml fájl kinyerése
Listázás időpont szerint
Exportálás változó könyvtárba
» több téma
Társalgó
»A programozásból jól meg lehet élni?
»MFC tanulás
»Könyvet adok-veszek
»Hogy viszonyul ehhez a család?
»Nintendo wii
»Letölthető az új Rad Studio XE és Delphi XE
»Weblap véleményezés
»Játékmotor elmélet
»Informatikai bulvárlap
»Delphi-ről C++-ra váltás
» több téma
ASP  |  C#  |  C++  |  CSS  |  Delphi  |  Flash  |  HTML  |  Java  |  JavaScript  |  Pascal  |  Perl  |  PHP  |  Python  |  Visual Basic  |  Visual C++  |    »    

Tudástár

»

PHP sql insert into hiba

»

PHP sql insert into hiba

nyitotta: szilardm, idő: 2010.02.08., moderátor: Árnyék
  Értesítés változás esetén Felvétel kedvencekhez Küldés emailben Nyomtatható verzió

Kategóriák:Adatbázisok » MySQL
Programozási nyelvek » PHP

Sorrend:
Időzóna:
Blokkméret:
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.
Belépés
E-mail cím:
Jelszó:

RSS források
-Hírek
-Cikkek
-Fórumok
-Állás/munka
Top pontgyűjtők
»Micu1.030
»Interlock280
»mezofi150
»Pitta_100
»Frostech0100
»szbzs.2100
»Hack100
»Riha60
»Akhiles50
»mrchandra50
Top wikieditorok
»Sting
»Doi
»FlamingClaw
»Argathron
»Csaboka2
»Vodka
»Joexy
»Ivn
»Balucinho
»Kelemzol
» ugrás a wikire
A nap kifejezései
»Algoritmus
»Hogyan kezdjem el
»Perl
» ugrás a wikire
Hírek
»Megérkezett a PostgreSQL 9.0 kiadásra jelölt változata
»Letölthető az új Rad Studio XE és Delphi XE
»Function-X digitális művészeti találkozó és demoscene party
»Webfejlesztőknek szóló közösségi oldalt indított a Microsoft
»Letölthető a hardvergyorsított Chrome 7 első fejlesztői kiadása
» több hír
PC Fórum hírek
»Itt az első kép az AMD nyolcmagos processzoráról
»"Szuperdizájnos" érintő-egeret mutatott be a Microsoft
»Szabadalmaztatta a számítógép kikapcsolását a Microsoft
»Vírusriadót váltott ki a webezőknél a Google
»Ingyen iWiW-ezhetnek mobiljaikról a T-Mobile-osok
»Automatikusan kiválogatja legfontosabb leveleink a Google
»OOo4Kids - ingyenes Office csomag gyerekeknek
»Új, gyorsabb Core i3 és Pentium processzorokat jelentett be az Intel
Tagi blogok
»PSP
»Első Programozó
»USB
»PHP, mint sablonmotor egyszerűen