Gå til innhold

Feil i mysql spørring...


Anbefalte innlegg

Skrevet (endret)

  $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
Videoannonse
Annonse
Skrevet (endret)

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 ????????
Skrevet (endret)
$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
Skrevet (endret)

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
Skrevet

Okay, hvis du ser på ''aa'' hva betyr dette, med tanke på at det er '

Det betyr at du oppretter og avslutter en '

Bruk mysql_real_escape_string() på variabelene dine!

Skrevet (endret)

: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
Skrevet (endret)

La til i innlegget over...

 

EDIT: Stikker nå jeg..., takk for hjelp så langt :)

Endret av AlXz
Skrevet (endret)
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
Skrevet (endret)

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
Skrevet (endret)

: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
Skrevet

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...

Skrevet
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`))

Skrevet

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:

Skrevet (endret)

Hmm, jeg lagde tabellen uten å velge noe fra den lista jeg.., men står noe om InnoDB i strukturen..

Endret av AlXz

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å
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...