insert into where... SQL syntax

Tags:    php sql

<< < 12 > >>
<?php
session_start();
include("db.php");
$sql = "insert into profiler(fornavn, efternavn, kategori, genre,) values('$_POST[fornavn]', '$_POST[efternavn]', '$_POST[kategori]', '$_POST[genre]') where brugernavn = '$_SESSION[brugernavn]'";
if (MYSQL_QUERY($sql, $CONN)) {
header("location: min_side.php");
exit;
}
else {
echo "Der er sket en fejl" .(mysql_error());
}
?>

denne kode giver mig denne fejl" You have an error in your SQL syntax; "

Mens følgende kodlinie virker i et andet script:
$bruger = "SELECT * FROM profiler where brugernavn = '$_SESSION[brugernavn]'";




12 svar postet i denne tråd vises herunder
7 indlæg har modtaget i alt 39 karma
Sorter efter stemmer Sorter efter dato
man kan ikke bruge et where statement på en insert.

hvis du vil opdatere en der findes skal du bruge update istedet.

$sql = "UPDATE profiler SET fornavn='$_POST[fornavn]', efternavn='$_POST[efternavn]', kategori='$_POST[kategori]', genre='$_POST[genre]' WHERE brugernavn = '$_SESSION[brugernavn]'";

dog kan det anbefales du bruger mysql_real_escape_string på dine post values før du køre dem igennem databasen.



Prøver du at opdatere en række eller hvad?

Du kan ikke bruge WHERE clauses i INSERT INTO statements. INSERT laver en ny række.

I stedet kan du bruge UPDATE tabel SET x = y, x2 = y2 WHERE z = q



Du skal ikke lave en insert into på en eksisterende record i tabellen. Så din where er ikke logisk at bruge her. Hvis den findes i forvejen skal du bruge update..... where.....

Og er det en ny record du ønsker så slet dit where brugernavn.......



Tuples er bare altid den betegnelse jeg har brugt og som har været brugt under mit studie, bla. Elmasri's bog Database Systems.

Men kan godt se hvad du mener, oftest bliver ordet tuple brugt i forbindelse med relationel algebra, men en tuple er reelt bare en række.




Lige for at skære det ud i pap så findes der:

INSERT INTO
indsætter en ny række i databasen (where ikke muligt her, da vi indsætter noget, vi leder ik efter noget.)
Fold kodeboks ind/udSQL kode 

http://dev.mysql.com/doc/refman/4.1/en/insert.html

UPDATE
opdatere en eller flere rækker i databasen (where; hvor skal der opdateres)
Fold kodeboks ind/udSQL kode 

http://dev.mysql.com/doc/refman/4.1/en/update.html

DELETE
Slet en eller flere rækker fra databasen (where; hvor skal der slettes)
Fold kodeboks ind/udSQL kode 

http://dev.mysql.com/doc/refman/4.1/en/delete.html


Det var vi vidst enige om drenge 20:02,03 og 04... :D

Ja det må man da sige



Er det en ny tuple du vil sætte ind?
Altså er det en helt ny række?

Eller er det en eksisterende række du vil opdatere?

Hvis det er en ny række skal du slette "WHERE" delen af dit query, hvis det er er række du skal opdatere skal du bruge Update.

Eksempel:
Fold kodeboks ind/udSQL kode 




@Martin, ikke for at fluekneppe - men tuple om en record i en sql tabel har jeg aldrig hørt før. I min verden har tuple altid været et sæt af to værdier. (1, 2) er en tuple bestående af 1 og 2. For eksempel bruges tuples i indikationen af intervaller osv - men om records? Du må meget gerne give mig en gang belæring hvis jeg har et hul i min terminologi :-)
Jeg tror at han har ret i at det kaldes en tuple, da de her også benytter termen - http://www.tomjewett.com/dbdesign/dbdesign.php?page=tables.php



Det var vi vidst enige om drenge 20:02,03 og 04... :D



Indlæg senest redigeret d. 19.02.2012 20:06 af Bruger #17015
@Martin, ikke for at fluekneppe - men tuple om en record i en sql tabel har jeg aldrig hørt før. I min verden har tuple altid været et sæt af to værdier. (1, 2) er en tuple bestående af 1 og 2. For eksempel bruges tuples i indikationen af intervaller osv - men om records? Du må meget gerne give mig en gang belæring hvis jeg har et hul i min terminologi :-)



Prøver du at opdatere en række eller hvad?

Du kan ikke bruge WHERE clauses i INSERT INTO statements. INSERT laver en ny række.

I stedet kan du bruge UPDATE tabel SET x = y, x2 = y2 WHERE z = q


Det er super tak for det :-)



<< < 12 > >>
t