webForumDet fria alternativet

PHP/MySQL-fel

10 svar · 279 visningar · startad av lillebror

lillebrorMedlem sedan apr. 20041 687 inlägg
#1

Hej!

Har råkat ut för ett konstigt felmeddelande helt plötsligt. Gjorde ändringar på mitt hemsideprojekt medan jag fortvarande var inloggad på sidan och en session var aktiv. När jag loggade ut så dök följande fel upp:

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 '' at line 1

När jag skriver in domänens namn så är index.php vald som förstasida. Eftersom jag har en include header.php i index.php så torde detta MySQL-fel referera till rad 1 i den? :OO

Hur som helst har jag plöjt igenom alla min SQL-satser utan att ha kunnat hitta något fel. Nu kommer jag inte åt sidan överhuvudtaget eftersom detta fel gör att allt hänger sig. Någon som kan hjälpa mig att tolka detta fel så att jag kan gå igenom koden på nytt?

@ndersMedlem sedan juni 200026 914 inlägg
#2

Skriv ut SQL-frågan med echo. MySQL-felet borde inte referera till rad 1 i någon php-fil, utan rad 1 i den felaktiga SQL-frågan.

K@llenMedlem sedan mars 20032 654 inlägg
#3

Erfarenhetsmässigt bör felet ligga i den första sql-frågan. Får jag gissa så kontrollerar du inte så att en (session)-variabel innehåller ett värde innan du skickar in den i din sql-fråga.

MatteMedlem sedan aug. 20002 970 inlägg
#4

Rad 1 är rad 1 i din SQL-fråga.

Någonstans har du mysql_error().
Skriv ut din SQL-fråga i samband med detta, så misstänker jag att du kommer att sakna värde på någon variabel.

Typ om du har

$sql = "SELECT * FROM tabell WHERE id = {$_GET['id']}";

och sedan inte har någon $_GET['id'].
Då kommer du att få en tom sträng, och den SQL-fråga som kommer att köras blir då:
SELECT * FROM tabell WHERE id =
En SQL-fråga som kommer att ge det fel som du får.

Nu är det långtifrån säkert att det är just detta som stökar för dig, men det bör åtminstone ge dig lite tips om vad du ska söka efter.

lillebrorMedlem sedan apr. 20041 687 inlägg
#5

Nu har jag lokaliserat felet. Det fanns i headerfilen.

##### LAGRAR TIDSNUMMER FÖR SENASTE INLOGGNING #######################
if($_SESSION["active"] == true) {
$SqlUpdate = "UPDATE tblMember SET last_visit = now() WHERE memberID = ".$_SESSION["uid"]."";
echo "SQL Update HEADER 1:".$SqlUpdate."</br>";
$RSobj = mysql_query($SqlUpdate) or die (mysql_error());
}

Jag misstänker att felet ligger i att första gången man laddar sidan så är man inloggad och då finns det inte någon SESSION["uid"] utan den är tom. Det i sin tur gör att SQL-satsen får fnatt. Dock kan jag tillägga att detta aldrig varit något problem tidigare. För säkerhets skull lade jag dit en IF-sats som känner av om en SESSION["active"] är satt till true eller false för att SQL-satsen inte ska matas med ett NULL-värde. Kan tillägga att en gäst per automatik tilldelas värdet false.

K@llenMedlem sedan mars 20032 654 inlägg
#6

Fasiken vad jag är bra på att gissa rätt. :e

lillebrorMedlem sedan apr. 20041 687 inlägg
#7

När jag nu körde sidan i IE så fungerade det helt plötsligt som det ska. Men i FF så kvarstår problemet :q

lillebrorMedlem sedan apr. 20041 687 inlägg
#8

K@llen skrev:

Fasiken vad jag är bra på att gissa rätt. :e

Du är nästan värd ett litet pris för den bedriften! :birp

lillebrorMedlem sedan apr. 20041 687 inlägg
#9

Nu kom jag på lösningen...

Istället för att köra med:

if($_SESSION["active"] == true)

Så valde jag att testa med detta alternativ:

if($_SESSION["uid"] != '')

Dock tycker jag att det första alternativet borde fungera likväl eftersom $_SESSION["active"] enbart blir true när en användare är inloggad och då borde aldrig programkörningen tas sig in i if-satsen...men men...allting ska inte va lätt :e :bla

aasahMedlem sedan mars 20033 451 inlägg
#10

Problemet dyker upp om du kan komma till
if($_SESSION["active"] == true) utan att $_SESSION["active"] ännu har fått ett värde. För då kommer det att få ett värde vid kollen...

lillebrorMedlem sedan apr. 20041 687 inlägg
#11

aasah skrev:

Problemet dyker upp om du kan komma till
if($_SESSION["active"] == true) utan att $_SESSION["active"] ännu har fått ett värde. För då kommer det att få ett värde vid kollen...

Värdet på $_SESSION["active"] sätts till false allra högst upp om man kommer in på sidan som "gäst" (if(empty($_SESSION["username"]))) och inte är inloggad. Så jag tycker inte att det borde vara det som ställer till det.

Genererad på 380 ms · cache AV · v20260730165559-full.f96bc7eb