Gå til innhold

Feil i mysql spørring...


Anbefalte innlegg

  $id = 'NULL';
  $lanid = $lib->quote_smart($_POST['lanid']);
  $title = $lib->quote_smart($_POST['title']);
  $table = $lib->quote_smart($_POST['table']);
  $intro = $lib->quote_smart($_POST['intro']);
  $text = $lib->quote_smart($_POST['text']);
  $img = $lib->quote_smart($_POST['img']);
  $dateposted = '123';
  $count = '0';

  $query = "INSERT INTO news (lanid, title, table, intro, text, img, dateposted, count) VALUES ('2', 'TITTELFAEN', '1', 'INTRO TEXT', 'TEXT', 'BILDE URL', '20.11.2005', '1')";

 

Feilmelding:

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 'table, intro, text, img, dateposted, count) VALUES ('2', 'TITTELFAEN', '1', 'INT' at line 1

 

Her er database strukturen: EDIT: Dette er den nyeste!

 

db.jpg

Endret av AlXz
Lenke til kommentar
Videoannonse
Annonse

Det er ikke feil å sette inn int som en streng, det er bare tregere - for da må mysql konvertere.

 

Problemet ditt er at du har et felt som heter table, og det går nok ikke fordi det er en "kommando".

 

Edit:

Du kan nok jukse deg rundt det ved å sett ´, ` eller ' rundt feltnavnet - men det er en dårlig løsning.

Endret av ????????
Lenke til kommentar
$query = "INSERT INTO news (lanid, title, view, intro, text, img, dateposted, count) VALUES ($lanid, '$title', '$view', '$intro', '$text', '$img', '$dateposted')";

$query = (mysql_query($query) OR die(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 'aa'', '0', ''aa'', ''aa'', '''', '123')' at line 1
Endret av AlXz
Lenke til kommentar

Hmm :hmm:

 

Her er den ihvertfall:

 

//$id = 'NULL';
  $lanid = $lib->quote_smart($_POST['lanid']);
  $title = $lib->quote_smart($_POST['title']);
  $view = $lib->quote_smart($_POST['table']);
  $intro = $lib->quote_smart($_POST['intro']);
  $text = $lib->quote_smart($_POST['text']);
  $img = $lib->quote_smart($_POST['img']);
  $dateposted = '123';
  //$number = 0;
  $query = "INSERT INTO news (lanid, title, view, intro, text, img, dateposted) VALUES ($lanid, '$title', '$view', '$intro', '$text', '$img', '$dateposted')";
echo $query;
echo "<br /><br />";
$query = (mysql_query($query) OR die(mysql_error())); 

 

Feilmld:

INSERT INTO news (lanid, title, view, intro, text, img, dateposted) VALUES (1, ''aa'', '0', ''aa'', ''aa'', '''', '123')

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 'aa'', '0', ''aa'', ''aa'', '''', '123')' at line 1

 

EDIT: Glemte å si at jeg har bytta noen navn i tabellen!

table er byttet til view, og count til number.

Endret av AlXz
Lenke til kommentar

:ermm:

EDIT: Siden quote_smart kjører mysql_real_escape_string(), så tok jeg vekk igjen den...

  $lanid = $lib->quote_smart($_POST['lanid']);
  $title = $lib->quote_smart($_POST['title']);
  $viewmode = $lib->quote_smart($_POST['table']);
  $intro = $lib->quote_smart($_POST['intro']);
  $newstext = $lib->quote_smart($_POST['text']);
  $img = $lib->quote_smart($_POST['img']);
  $dateposted = $lib->quote_smart('123');
  $query = "INSERT INTO news (lanid, title, viewmode, intro, newstext, img, dateposted) VALUES ($lanid, '$title', '$viewmode', '$intro', '$newstext', '$img', '$dateposted')";
echo $query;
echo "<br /><br />";
$query = (mysql_query($query) OR die(mysql_error())); 

 

Nå er table byttet til viewmode, count byttet til number og text byttet til newstext.

 

INSERT INTO news (lanid, title, viewmode, intro, newstext, img, dateposted) VALUES (1, ''aa'', '0', ''aa'', ''aa'', '''', '123')

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 'aa'', '0', ''aa'', ''aa'', '''', '123')' at line 1

 

Her er funksjonen quote_smart() om det hjelper noe...

	function quote_smart($value) {
 if (get_magic_quotes_gpc()) {
 	$value = stripslashes($value);
 }
 if (!is_numeric($value)) {
 	$value = "'" . mysql_real_escape_string($value) . "'";
 }
return $value;
}

 

db.jpg

Endret av AlXz
Lenke til kommentar
INSERT INTO news (lanid, title, viewmode, intro, newstext, img, dateposted) VALUES (1, ''aa'', '0', ''aa'', ''aa'', '''', '123')

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 'aa'', '0', ''aa'', ''aa'', '''', '123')' at line 1

5183311[/snapback]

 

Hvorfor har du dobbelt opp med '''' i spørringen? :dontgetit:

Endret av Lurifaksen
Lenke til kommentar

Ser at funksjonen quote_smart legger til ' på starten og slutten av strengen.

 

Prøv en av følgende:

1. fjern alle ' fra spørringen :

$query = "INSERT INTO news (lanid, title, viewmode, intro, newstext, img, dateposted) VALUES ($lanid, $title, $viewmode, $intro, $newstext, $img, $dateposted)";

Men det kan kanskje bli lkitt feil med tanke på den siste ($dateposted) som er et tall, og ikke får lagt til ' før og etter.

 

2. Endre til dette i funksjonen:

$value = mysql_real_escape_string($value);

 

EDIT: Ikke gjør begge tingene, da vil det bli feil, fordi da blir det ingen ' i det hele tatt. Jeg ville kanskje gått fo alternativ 2

Endret av kakkle
Lenke til kommentar

:hmm::no:

INSERT INTO news (lanid, title, viewmode, intro, newstext, img, dateposted) VALUES (0, 'TESTER', 0, 'TESTER', 'TESRET', 'TET', 123)

Cannot add or update a child row: a foreign key constraint fails (`aleks_lan/news`, CONSTRAINT `news_ibfk_1` FOREIGN KEY (`id`) REFERENCES `lan` (`lanid`))

 

Hmm, rara greier..., noen som gidder lage php kode som opretter en tabell som kan inneholde den infoen i strukturen..? Endre navna og sånt så det går å bruke den. Eller noen andre forslag?

 

 

EDIT: Noen som vet noe om primary key? Er det noe man skal ha eller ikke?

 

 

 

 

 

Takk for alle svar :)

Endret av AlXz
Lenke til kommentar

Du bør absolutt sette id til å være primær nøkkel ;)

 

Når det gjelder den feilmeldingen, så er det nok det at du setter lanid til å være 0, mens du ikke tillater null i det feltet i databasen (NOT NULL) Prøv å legge inn en annen verdi større enn 0 i feltet lanid...

Lenke til kommentar
INSERT INTO news (lanid, title, viewmode, intro, newstext, img, dateposted) VALUES (1, 'hghgfh', 1, 'ghdgfh', 'gfdhghgfh', 'hjhjhj', 123)

Cannot add or update a child row: a foreign key constraint fails (`aleks_lan/news`, CONSTRAINT `news_ibfk_1` FOREIGN KEY (`id`) REFERENCES `lan` (`lanid`))

Lenke til kommentar

Dette kunne minne om en InnoDB tabell, noe som generelt ikke brukes i vanlige webapplikasjoner.

 

InnoDB rejects any INSERT or UPDATE operation that attempts to create a foreign key value in a child table without a matching candidate key value in the parent table. The action InnoDB takes for any UPDATE or DELETE operation that attempts to update or delete a candidate key value in the parent table that has some matching rows in the child table is dependent on the referential action specified using ON UPDATE and ON DETETE subclauses of the FOREIGN KEY clause. When the user attempts to delete or update a row from a parent table, and there are one or more matching rows in the child table, InnoDB supports five options regarding the action to be taken:

Lenke til kommentar

Opprett en konto eller logg inn for å kommentere

Du må være et medlem for å kunne skrive en kommentar

Opprett konto

Det er enkelt å melde seg inn for å starte en ny konto!

Start en konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
×
×
  • Opprett ny...