Vad är det för fel på denna fråga..
// TIPSARE - START
$res = mysql_query("SELECT namn FROM tipsare WHERE id=$user[tipsare] LIMIT 1") or sqlerr();
if (mysql_num_rows($res) == 1)
{
$arr = mysql_fetch_assoc($res);
$tipsare = "$arr[namn]";
}
// TIPSARE - END
Detta felet får jag när jag försöker visa sidan:
SQL 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 'LIMIT 1' at line 1
Har skapat en ny tabell (tipsare) i min databas med id och namn.
Typiskt när man äntligen försöker göra ett eget script, så får man en massa fel. :(
oHLLeMedlem sedan nov. 2002302 inlägg Hur ser frågan ut om du skriver ut den? Det blir antagligen fel vid id=$user[tipsare]
oHLLe skrev:
Hur ser frågan ut om du skriver ut den? Det blir antagligen fel vid id=$user[tipsare]
För att visa "Tipsare" har jag gjort såhär:
// TIPSARE - START
if ($user["namn"])
print("<tr><td class=rowhead>Tipsad av</td><td align=left>$user[namn]</td></tr>\n");
// TIPSARE - END
oHLLeMedlem sedan nov. 2002302 inlägg Om du kör
echo "SELECT namn FROM tipsare WHERE id=$user[tipsare] LIMIT 1";
innan du kör frågan mot databasen. Vad får du för utskrift?
spangoMedlem sedan juni 20008 205 inlägg Han menar att du ska skriva ut SQL-frågan som du skickar till databasen, eftersom den ser rätt ut men uppenbarligen blir fel, på något sätt.
PeeerMedlem sedan mars 20025 907 inlägg SQL-frågor hör hemma i SQL-forumet, inte PHP!
Tråden flyttas trån PHP!
aasahMedlem sedan mars 20034 471 inlägg Alltså byt ut:
$res = mysql_query("SELECT namn FROM tipsare WHERE id=$user[tipsare] LIMIT 1") or sqlerr();
mot:
$sql = "SELECT namn FROM tipsare WHERE id=$user[tipsare] LIMIT 1";
echo $sql;
$res = mysql_query($sql) or sqlerr();
För då ser du hur frågan som skickas till databasen ser ut med värdena från variablerna istoppade.
OM databasen förväntar sig en siffra vid id och $user[tipsare] är ett namn, så blir det tvärstopp! Är det månne det som är problemet? :q
En annan möjlighet med MySQL (i vart fall) är om du har döpt kolumnen till ID tex så kan du inte sätta id. Dvs stor/liten bokstav spelar roll!
spango skrev:
Han menar att du ska skriva ut SQL-frågan som du skickar till databasen, eftersom den ser rätt ut men uppenbarligen blir fel, på något sätt.
Det har jag förstått.. ;)
Men var och hur ska jag skriva "echo-koden"? :r
// TIPSARE - START
$res = mysql_query("SELECT namn FROM tipsare WHERE id=$user[tipsare] LIMIT 1") or sqlerr();
if (mysql_num_rows($res) == 1)
{
$arr = mysql_fetch_assoc($res);
$tipsare = "$arr[namn]";
}
// TIPSARE - END
aasahMedlem sedan mars 20034 471 inlägg Guldstrand, läs mitt inlägg ovanför ditt!!!
aasah skrev:
Guldstrand, läs mitt inlägg ovanför ditt!!!
Du måste ha postat samtidigt som mig. :e
Nu ser det ut såhär
// TIPSARE - START
$sql = "SELECT namn FROM tipsare WHERE id=$user[tipsare] LIMIT 1";
echo $sql;
$res = mysql_query($sql) or sqlerr();
if (mysql_num_rows($res) == 1)
{
$arr = mysql_fetch_assoc($res);
$tipsare = "$arr[namn]";
}
// TIPSARE - END
Det enda som händer, är att "SELECT namn FROM tipsare WHERE id= LIMIT 1" skrivs ut ovanför SQL-Error.
JosefMedlem sedan mars 20023 561 inlägg Du har inget värde i din $user[tipsare]-variabel.
aasahMedlem sedan mars 20034 471 inlägg
Guldstrand skrev:
... Det enda som händer, är att "SELECT namn FROM tipsare WHERE id= LIMIT 1" skrivs ut ovanför SQL-Error.
Och där har du ditt fel, id får ju inget värde!!! :o Skriv så här:
$sql = "SELECT namn FROM tipsare WHERE id=".$user["tipsare"]." LIMIT 1";
Hjälpte det? Oftast funkar det inte med array-värden mitt i en sträng...
Jag testade att ändra allt.
// TIPSARE - START
$sql = "SELECT tipsare FROM users WHERE id=".$user["tipsare"]." LIMIT 1";
echo $sql;
$res = mysql_query($sql) or sqlerr();
if (mysql_num_rows($res) == 1)
{
$arr = mysql_fetch_assoc($res);
$tipsare = "$arr[tipsare]";
}
// TIPSARE - END
Givetvis har jag skapat en ny tabell (tipsare) i users. ;)
På registreringssidan finns...
<tr><td align="right" class="heading">Tipsad av:</td><td align=left><input type="text" size="20" name="tipsare" /> * under utveckling</td></tr>
"Tipsaren" sparas i tabellen (tipsare) utan problem, men när jag ska visa en användares "profil" där jag har valt att visa "tipsaren" får jag ett SQL Error.
SQL 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 'LIMIT 1' at line 1
aasah skrev:
Guldstrand skrev:
... Det enda som händer, är att "SELECT namn FROM tipsare WHERE id= LIMIT 1" skrivs ut ovanför SQL-Error.
Och där har du ditt fel, id får ju inget värde!!! :o Skriv så här:
$sql = "SELECT namn FROM tipsare WHERE id=".$user["tipsare"]." LIMIT 1";
Hjälpte det? Oftast funkar det inte med array-värden mitt i en sträng...
Nej, det fungerade inte.
Har fortfarande samma "SQL Error".. :(
aasahMedlem sedan mars 20034 471 inlägg
Guldstrand skrev:
På registreringssidan finns...
<tr><td align="right" class="heading">Tipsad av:</td>
<td align=left><input type="text" size="20" name="tipsare" /> * under utveckling</td></tr>
Hur hamnar detta värde i $user["tipsare"]? Skickar du formen/inputfältet med POST eller GET? Förmodligen är det här felet ligger.
aasah skrev:
Guldstrand skrev:
På registreringssidan finns...
<tr><td align="right" class="heading">Tipsad av:</td>
<td align=left><input type="text" size="20" name="tipsare" /> * under utveckling</td></tr>
Hur hamnar detta värde i $user["tipsare"]? Skickar du formen/inputfältet med POST eller GET? Förmodligen är det här felet ligger.
Nej, jag tror inte det är det som är problemet.
Fältet "tipsare" sparas i databasen utan problem när en användare registrerar sig på sida.
Problemet är fortfarande när jag ska hämta informationen från tabellen och visa namnet på tipsaren.
(Svårt att förklara.)
När jag kommenterade "//" funktionen "Tipsare" så fungerade sidan som den skulle, så det måste vara något fel på sql-frågan.
// TIPSARE - START
$res = mysql_query("SELECT tipsare FROM users WHERE id=$user[tipsare] LIMIT 1") or sqlerr();
if (mysql_num_rows($res) == 1)
{
$arr = mysql_fetch_assoc($res);
$tipsare = "$arr[tipsare]";
}
// TIPSARE - END
Detta använder jag för att visa "tipsaren"
if ($user["tipsare"])
print("<tr><td class=rowhead>Tipsad av</td><td align=left>$tipsare</td></tr>\n");
Har ändrat fram och tillbaka, men inget verkar fungera. :(
aasahMedlem sedan mars 20034 471 inlägg Guldstrand, ditt fel är följande:
Guldstrand skrev:
...Det enda som händer, är att "SELECT namn FROM tipsare WHERE id= LIMIT 1" skrivs ut ovanför SQL-Error.
Eller hur? :q
Skälet till att det blir fel är att din tilldelning inte funkar, närmare bestämt 'WHERE id= ' Lika med vaddå? :q Ingenting alls! Av detta framgår att $user["tipsare"] antingen inte är satt eller har fått värdet "" (tomma strängen). Alltså får du leta rätt på var $user["tipsare"] får sitt värde. Det är någon vajsing där!
aasah skrev:
Guldstrand, ditt fel är följande:
Guldstrand skrev:
...Det enda som händer, är att "SELECT namn FROM tipsare WHERE id= LIMIT 1" skrivs ut ovanför SQL-Error.
Eller hur? :q
Skälet till att det blir fel är att din tilldelning inte funkar, närmare bestämt 'WHERE id= ' Lika med vaddå? :q Ingenting alls! Av detta framgår att $user["tipsare"] antingen inte är satt eller har fått värdet "" (tomma strängen). Alltså får du leta rätt på var $user["tipsare"] får sitt värde. Det är någon vajsing där!
Verkar som att det fungerar nu. :birp
Ändrade till "SELECT namn FROM tipsare WHERE id=tipsare LIMIT 1"
För att visa "tipsaren"..
// TIPSARE - START
if ($user["tipsare"])
print("<tr><td class=rowhead>Tipsad av</td><td align=left>$user[tipsare]</td></tr>\n");
// TIPSARE - END
Det var tydligen lättare än vad jag trodde.. :r
Tack för hjälpen alla som har försökt.