Avatar billede stengaard Praktikant
23. november 2005 - 20:43 Der er 17 kommentarer og
1 løsning

hvad betyder denne fejl MySQL fejl:

fejlen er følgende

MySQL fejl: Unknown column 'test' in 'where clause'

på dette script og table

<?php

session_start();
if ($_POST['bruger'] == "" AND $_POST['pass'] == "") {
$_SESSION['status'] = "nobrugerpass";
header("Location: login.php");
exit;
}
elseif ($_POST['bruger'] == "") {
$_SESSION['status'] = "nobruger";
header("Location: login.php");
exit;
}
elseif ($_POST['pass'] == "") {
$_SESSION['status'] = "nopass";
header("Location: login.php");
exit;
}
else
{
include("access.php");
$query = "SELECT user, pass FROM login1  WHERE user = '".$_POST['bruger']."' AND pass= '".$_POST['pass']."'";
$result = mysql_query($query)or die("MySQL fejl: " . mysql_error());
$log = mysql_fetch_array($result);
if ($_POST['bruger'] == $log['user'] && $_POST['pass'] == $log['pass']) {
$_SESSION['status'] = "login";
$_SESSION['navn'] = $_POST['bruger'];
//sætter status til at være 1, = at brugeren er online.
$status = mysql_query("UPDATE login1 SET status=status+1 WHERE user=".$_SESSION['navn']) or die("MySQL fejl: " . mysql_error());
header("Location: index.php");
exit;
}
else
{
$_SESSION['status'] = "fejl";
header("Location: login.php");
exit;
}
}

?>

tablen

CREATE TABLE `login1` (
  `ID` int(11) NOT NULL auto_increment,
  `user` varchar(50) NOT NULL default '',
  `pass` varchar(25) NOT NULL default '',
  `ip` varchar(15) NOT NULL default '',
  `navn` varchar(51) NOT NULL default 'Ikke oplyst',
  `email` varchar(50) NOT NULL default '',
  `status` char(1) NOT NULL default '',
  `timestamp` timestamp(14) NOT NULL,
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `idx_brugere` (`user`)
) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=10 ;
Avatar billede bromer Nybegynder
23. november 2005 - 20:45 #1
Det er fordi du bruger " omkring navnet i din WHERE. Brug ' istedet. Ellers tolker den indholdet som et kolonne eller tabelnavn. Det skal den ikke.
Avatar billede stengaard Praktikant
23. november 2005 - 20:50 #2
pass hvad mener du ???
Avatar billede bromer Nybegynder
23. november 2005 - 20:53 #3
Det var også mig der så forkert. Men jeg tror problemet ligger i at du ikke får quotes ordentligt. Hvis du retter denne:

$status = mysql_query("UPDATE login1 SET status=status+1 WHERE user=".$_SESSION['navn']) or die("MySQL fejl: " . mysql_error());

til

$status = mysql_query("UPDATE login1 SET status=status+1 WHERE user='".$_SESSION['navn'] . "'") or die("MySQL fejl: " . mysql_error());

så burde det virke.
Avatar billede stengaard Praktikant
23. november 2005 - 20:54 #4
ok prøver
Avatar billede stengaard Praktikant
23. november 2005 - 20:57 #5
nu virker den men den skriver ikke user rigtige fra feltet navn

men test som både kode og bruger er altså user

hvad gør jeg forkert der
Avatar billede jakobdo Ekspert
23. november 2005 - 21:09 #6
Istedet for at teste:
$_POST['bruger'] == ""
bør du teste med:
empty($_POST['bruger'])
Avatar billede stengaard Praktikant
23. november 2005 - 21:16 #7
pass hvad mener du ???

har også et problem med dette script som skulle tælle dem der var i status 1 og dem der var istatus 0

ser således ud ::

<?

include("access.php");
$online_tjek = mysql_query("SELECT * FROM login1 WHERE status = '1'") or die("MySQL fejl: " . mysql_error());
$online = mysql_fetch_array($online_tjek); {
Print "dine variabler om online brugere";
}

//offline brugere
$offline_tjek = mysql_query("SELECT * FROM login1 WHERE status = '0'") or die("MySQL fejl: " . mysql_error());
$offline = mysql_fetch_array($offline_tjek); {
Print "dine variabler om offline brugere";
}
?>
Avatar billede jakobdo Ekspert
23. november 2005 - 21:22 #8
Jeg har rettet din kode lidt...
<?php
session_start();

if(empty($_POST['bruger']) AND empty($_POST['pass']))
{
    $_SESSION['status'] = "nobrugerpass";
    header("Location: login.php");
    exit;
}
elseif(empty($_POST['bruger']))
{
    $_SESSION['status'] = "nobruger";
    header("Location: login.php");
    exit;
}
elseif(empty($_POST['pass']))
{
    $_SESSION['status'] = "nopass";
    header("Location: login.php");
    exit;
}
else
{
    include("access.php");
    $bruger = mysql_real_escape_string($_POST['bruger']);
    $pass  = mysql_real_escape_string($_POST['pass']);
    $query = "SELECT user, pass FROM login1 WHERE user = '".$bruger."' AND pass= '".$pass."' LIMIT 1";
    $result = mysql_query($query)or die("MySQL fejl: " . mysql_error());
    if(mysql_num_rows($result)>0)
    {
        $log = mysql_fetch_array($result);
        $_SESSION['status'] = "login";
        $_SESSION['navn']  = $log['user'];
        //sætter status til at være 1, = at brugeren er online.
        $status = mysql_query("UPDATE login1 SET status=1 WHERE user=".$_SESSION['navn']." LIMIT 1") or die("MySQL fejl: " . mysql_error());
        header("Location: index.php");
        exit;
    }
    else
    {
        $_SESSION['status'] = "fejl";
        header("Location: login.php");
        exit;
    }
}

?>
Avatar billede stengaard Praktikant
23. november 2005 - 21:25 #9
følgende fejl

MySQL fejl: Unknown column 'test' in 'where clause'
Avatar billede jakobdo Ekspert
23. november 2005 - 21:29 #10
Prøv lige at ret den første af disse:
or die("MySQL fejl: " . mysql_error());
til:
or die("MySQL fejl - SELECT: " . mysql_error());
og nummer til:
or die("MySQL fejl - UPDATE: " . mysql_error());
Avatar billede stengaard Praktikant
23. november 2005 - 21:33 #11
følgende fejl på scriptet

MySQL fejl - UPDATE: Unknown column 'test' in 'where clause'

<?php
session_start();

if(empty($_POST['bruger']) AND empty($_POST['pass']))
{
    $_SESSION['status'] = "nobrugerpass";
    header("Location: login.php");
    exit;
}
elseif(empty($_POST['bruger']))
{
    $_SESSION['status'] = "nobruger";
    header("Location: login.php");
    exit;
}
elseif(empty($_POST['pass']))
{
    $_SESSION['status'] = "nopass";
    header("Location: login.php");
    exit;
}
else
{
    include("access.php");
    $bruger = mysql_real_escape_string($_POST['bruger']);
    $pass  = mysql_real_escape_string($_POST['pass']);
    $query = "SELECT user, pass FROM login1 WHERE user = '".$bruger."' AND pass= '".$pass."' LIMIT 1";
    $result = mysql_query($query)or die("MySQL fejl - SELECT: " . mysql_error());
    if(mysql_num_rows($result)>0)
    {
        $log = mysql_fetch_array($result);
        $_SESSION['status'] = "login";
        $_SESSION['navn']  = $log['user'];
        //sætter status til at være 1, = at brugeren er online.
        $status = mysql_query("UPDATE login1 SET status=1 WHERE user=".$_SESSION['navn']." LIMIT 1") or die("MySQL fejl - UPDATE: " . mysql_error());
        header("Location: index.php");
        exit;
    }
    else
    {
        $_SESSION['status'] = "fejl";
        header("Location: login.php");
        exit;
    }
}

?>
Avatar billede jakobdo Ekspert
23. november 2005 - 21:37 #12
Hvilken datatype er: status og user i tabellen login1 ?
Avatar billede stengaard Praktikant
23. november 2005 - 21:39 #13
tablen ser således ud

CREATE TABLE `login1` (
  `ID` int(11) NOT NULL auto_increment,
  `user` varchar(50) NOT NULL default '',
  `pass` varchar(25) NOT NULL default '',
  `ip` varchar(15) NOT NULL default '',
  `navn` varchar(51) NOT NULL default 'Ikke oplyst',
  `email` varchar(50) NOT NULL default '',
  `status` char(1) NOT NULL default '',
  `timestamp` timestamp(14) NOT NULL,
  PRIMARY KEY  (`ID`),
  UNIQUE KEY `idx_brugere` (`user`)
) TYPE=MyISAM PACK_KEYS=0 AUTO_INCREMENT=10 ;

jeg tror ikke jeg forstår dig helt

tekst
Avatar billede jakobdo Ekspert
23. november 2005 - 21:40 #14
Prøv at ret: status=1
til: status='1'
Avatar billede stengaard Praktikant
23. november 2005 - 21:45 #15
samme fejl

MySQL fejl - UPDATE: Unknown column 'test' in 'where clause'

på scriptet

<?php
session_start();

if(empty($_POST['bruger']) AND empty($_POST['pass']))
{
    $_SESSION['status'] = "nobrugerpass";
    header("Location: login.php");
    exit;
}
elseif(empty($_POST['bruger']))
{
    $_SESSION['status'] = "nobruger";
    header("Location: login.php");
    exit;
}
elseif(empty($_POST['pass']))
{
    $_SESSION['status'] = "nopass";
    header("Location: login.php");
    exit;
}
else
{
    include("access.php");
    $bruger = mysql_real_escape_string($_POST['bruger']);
    $pass  = mysql_real_escape_string($_POST['pass']);
    $query = "SELECT user, pass FROM login1 WHERE user = '".$bruger."' AND pass= '".$pass."' LIMIT 1";
    $result = mysql_query($query)or die("MySQL fejl - SELECT: " . mysql_error());
    if(mysql_num_rows($result)>0)
    {
        $log = mysql_fetch_array($result);
        $_SESSION['status'] = "login";
        $_SESSION['navn']  = $log['user'];
        //sætter status til at være 1, = at brugeren er online.
        $status = mysql_query("UPDATE login1 SET status='1' WHERE user=".$_SESSION['navn']." LIMIT 1") or die("MySQL fejl - UPDATE: " . mysql_error());
        header("Location: index.php");
        exit;
    }
    else
    {
        $_SESSION['status'] = "fejl";
        header("Location: login.php");
        exit;
    }
}

?>
Avatar billede hmortensen Nybegynder
23. november 2005 - 22:19 #16
jakobdo, du har i din editerede udgave ikke fået sat '' om session variablen, som bromer ellers rettede ;)
Avatar billede jakobdo Ekspert
24. november 2005 - 08:19 #17
Damn, det kan jeg godt se ja! :o(

$status = mysql_query("UPDATE login1 SET status='1' WHERE user='".$_SESSION['navn']."' LIMIT 1") or die("MySQL fejl - UPDATE: " . mysql_error());
Avatar billede stengaard Praktikant
01. december 2005 - 10:46 #18
lukket
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Vi tilbyder markedets bedste kurser inden for webudvikling

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester