Konkret SQL-fel. Hjälp önskas.

Allt om hård- och mjukvara samt övriga it-relaterade diskussioner.

 Moderatorer: atoms, Alien

Konkret SQL-fel. Hjälp önskas.

Inläggav weasley » 2012-08-14 16:45:54

Jag har ett jättemysko SQL-fel.

Kod:

Kod: Markera allt
 $result2 = mysql_query("UPDATE bla-tabell SET adress='$addr' AND bla1='$blabla' AND bla2='$blablabla' AND bla3='$blablablabla' AND bla4='$blablablablabla' WHERE id='$id'")


Variablerna kommer från en

Kod: Markera allt
<form method='submit.php'><--! massa hmtl-tjafs här><input type=submit name=submit value=submit></form>
if (isset(submit))
{
  $addr = $_POST['adress'];
  $bla1 = $_POST['diverse'];
[osv etc mm odyl]


Problemet:
Variabeln $addr sätts till noll. Ingen av de andra. Det här är som ni ser en redigeringsfunktion (UPDATE .... WHERE id....)och htmlformuläret innehåller fält där man exvis kan ändra stavfel eller lägga till information i blanka fält.

Om jag gör en
Kod: Markera allt
print "$addr, $bla1 [etc]";
strax innan min query så ser allt ut som det ska. Rättstavade gatunamn, blanka fält har fyllts i ordentligt. Men i själva UPDATE går något fel och adressen sätts till 0 (noll) och de blanka fälten fortsätter vara blanka. Fält jag inte ändrat visas dock fortfarande som de ska.

Hoppas jag inte varit alltför virrig i min beskrivning nu. Har suttit med det här och stirrat mej blind på kommatecken, fnuttar, dubbelfnuttar och parenteser så jag känner mej rätt mosig i huvet.

(Har jag skrivit några fnuttar fel här så var snälla att ha överseende med det pga ovanstående huvudmos...)
weasley
 
Inlägg: 9949
Anslöt: 2007-04-18
Ort: eth0

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav Miche » 2012-08-14 16:48:06

weasley skrev:"UPDATE bla-tabell SET adress='$addr' AND bla1='$blabla' AND bla2='$blablabla' AND bla3='$blablablabla' AND bla4='$blablablablabla' WHERE id='$id'

Du ska inte använda AND, du ska använda ett kommatecken för att skilja delarna åt annars blir det booelsk algebra.
Miche
 
Inlägg: 28797
Anslöt: 2009-01-08
Ort: Karlholmsbruk

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav weasley » 2012-08-14 16:57:22

Miche skrev:
weasley skrev:"UPDATE bla-tabell SET adress='$addr' AND bla1='$blabla' AND bla2='$blablabla' AND bla3='$blablablabla' AND bla4='$blablablablabla' WHERE id='$id'

Du ska inte använda AND, du ska använda ett kommatecken för att skilja delarna åt annars blir det booelsk algebra.

Kollade på det och i MySQL 5.1 och över kan man tydligen använda AND enligt deras manual.
weasley
 
Inlägg: 9949
Anslöt: 2007-04-18
Ort: eth0

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav Miche » 2012-08-14 17:01:51

weasley skrev:Kollade på det och i MySQL 5.1 och över kan man tydligen använda AND enligt deras manual.

Har du provat med kommatecken? Jag tycker det verkar ologiskt att de skulle godkänna AND, det stämmer inte med övrig SQL-syntax.
Miche
 
Inlägg: 28797
Anslöt: 2009-01-08
Ort: Karlholmsbruk

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav weasley » 2012-08-14 17:17:15

Varför funkar de andra fälten då?
weasley
 
Inlägg: 9949
Anslöt: 2007-04-18
Ort: eth0

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav Miche » 2012-08-14 17:26:24

De andra fälten borde inte byta värden i UPDATE-satsen om det tolkas som boolsk algebra!
Miche
 
Inlägg: 28797
Anslöt: 2009-01-08
Ort: Karlholmsbruk

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav weasley » 2012-08-14 17:37:28

Ah, så det här exemplet är inte applicerbart i mitt fall?

Kod: Markera allt
mysql_query("UPDATE Persons SET Age=36
WHERE FirstName='Peter' AND LastName='Griffin'");
weasley
 
Inlägg: 9949
Anslöt: 2007-04-18
Ort: eth0

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav Miche » 2012-08-14 17:47:17

Det är fullt applicerbart, där används ju AND till den boolska algebran för urvalet, ska man uppdatera flera fält så ska du särskilja med kommatecken.
Miche
 
Inlägg: 28797
Anslöt: 2009-01-08
Ort: Karlholmsbruk

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav Björne » 2012-08-15 14:44:32

Kika på mysqli (http://br.php.net/manual/en/book.mysqli.php). Dina exempelqueries kan utsättas för sql-injektionattacker (http://sv.wikipedia.org/wiki/SQL-injektion). Ex. skriver någon "'; --" i ditt adressfält skriver de över hela databasen.
Björne
Frivilligt inaktiverad
 
Inlägg: 1595
Anslöt: 2009-11-12
Ort: Bah

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav weasley » 2012-08-15 23:43:27

Björne skrev:Kika på mysqli (http://br.php.net/manual/en/book.mysqli.php). Dina exempelqueries kan utsättas för sql-injektionattacker (http://sv.wikipedia.org/wiki/SQL-injektion). Ex. skriver någon "'; --" i ditt adressfält skriver de över hela databasen.


Jag rensar naturligtvis all input innan den ska in i dbn. Tyckte det var onödigt att citera det som inte var relevant för mitt problem.
weasley
 
Inlägg: 9949
Anslöt: 2007-04-18
Ort: eth0

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav Miche » 2012-08-15 23:58:37

@weasley, hur går det med frågan i startinlägget? Har du kommit någon vart?
Miche
 
Inlägg: 28797
Anslöt: 2009-01-08
Ort: Karlholmsbruk

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav Issa Jesus » 2012-08-16 1:20:58

Bild

vad ere där för fel?????????
Issa Jesus
Förhandsgranskad
 
Inlägg: 2242
Anslöt: 2012-01-06
Ort: lulea, atlantis.

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav weasley » 2012-08-16 11:30:10

Miche skrev:@weasley, hur går det med frågan i startinlägget? Har du kommit någon vart?


Sitter just nu på ett halvtrasigt 3G så ssh är inte att tänka på...
weasley
 
Inlägg: 9949
Anslöt: 2007-04-18
Ort: eth0

Re: Konkret SQL-fel. Hjälp önskas.

Inläggav Miche » 2012-08-16 11:47:42

Issa Jesus skrev:vad ere där för fel?????????

Det där får du ta med en högre makt (den webbansvarige), det har ingenting med SQL att göra utan är ett nätverksproblem.
Miche
 
Inlägg: 28797
Anslöt: 2009-01-08
Ort: Karlholmsbruk

Återgå till IT-forum



Logga in