Avatar billede -sofus- Nybegynder
06. februar 2006 - 11:17 Der er 26 kommentarer og
1 løsning

conn.execute ?

Jeg skal bruge en linie som executer en sql string, som laver en update.

Jeg er ikke en haj til php, men ved hvordan den ser ud i asp (;

conn.execute "Update users set userlevel = '5' where userid = session(userid)"

Håber i forstår hvad jeg mener (;
Avatar billede coderdk Praktikant
06. februar 2006 - 13:03 #1
Det kommer an på hvilken database du bruger. MySQL er mest udbredt i PHP. Kig på http://dk.php.net/mysql_connect http://dk.php.net/mysql_select_db http://dk.php.net/mysql_query http://dk.php.net/mysql_fetch_assoc
Avatar billede -sofus- Nybegynder
06. februar 2006 - 13:23 #2
bruger mysql
Avatar billede stieper Nybegynder
06. februar 2006 - 14:30 #3
$sql = "UPDATE `users` SET `userlevel` = '5' WHERE `userid` = '$session(userid)'"
$result = mysql_query($sql) or die(mysql_error());
Avatar billede stieper Nybegynder
06. februar 2006 - 14:32 #4
Hov - sådan:

$sql = "UPDATE `users` SET `userlevel` = '5' WHERE `userid` = '$session(userid)'";
$result = mysql_query($sql) or die(mysql_error());
Avatar billede -sofus- Nybegynder
06. februar 2006 - 15:17 #5
Får den her fejl
Parse error: parse error in test.php on line 11
Avatar billede stieper Nybegynder
06. februar 2006 - 15:18 #6
Ok.. prøv at skriv din kode ud fra test.php
Avatar billede -sofus- Nybegynder
06. februar 2006 - 15:22 #7
<?php
require('database.php');

$sql = "UPDATE `users` SET `userlevel` = '5' WHERE `id` = '3560'";
$result = mysql_query($sql) or die(mysql_error());

?>

Ikke mig der har lavet den database.php, men der er den som indholder connection string til databasen.
Avatar billede stieper Nybegynder
06. februar 2006 - 15:26 #8
Ok.. prøv at smid koden fra den herind.. bare skriv xxxx i stedet for kodeord osv ;-) Lidt svært for mig at se hvad linje 11 er nemlig ;-)
Avatar billede -sofus- Nybegynder
06. februar 2006 - 15:29 #9
<?php

require('database.php');



    $query = "UPDATE `users` SET `userlevel` = '5' WHERE `id` = '$session(userid)'";
    $result = QueryMainDb($query);

?>

Har lige lavet lidt om på den, så den passer med database.php nu for jeg ingen fejl men det gør bare ingen ting.
Avatar billede -sofus- Nybegynder
06. februar 2006 - 15:29 #10
og den som var linie 11, var den med $sql (;
Avatar billede stieper Nybegynder
06. februar 2006 - 15:32 #11
ok - du bliver nødt til at vise din kode fra database.php for at vi kan se, hvorfor den ikke opdaterer noget.
Evt. kan du udskrive $query til skærmen for at se om den fanger et session(userid) - og du skal jo også være sikker på at der findes en entry i din database som har id = $session(userid) ;-)
Avatar billede -sofus- Nybegynder
06. februar 2006 - 15:38 #12
<?php
$mainDbConn = false;


function ConnectMainDb()
{
    global $config;
    global $mainDbConn;


    if (!$mainDbConn)
    {
        $mainDbConn = mysql_connect($config['server'], $config['username'], $config['password']);

        if ($mainDbConn)
        {
            if (!mysql_select_db($config['maindatabase'], $mainDbConn))
            {
                if (ini_get('display_errors') == 1)
                    echo 'mysql_select_db failed<br>',
                    mysql_errno(), '<br>',
                    mysql_error(),
                    '<br>server: ', $config['server'],
                    '<br>databasename: ', $config['maindatabase'];

                mysql_close($mainDbConn);
                $mainDbConn = false;
            }
        }
    }
}


function CloseMainDb()
{
    global $mainDbConn;
    mysql_close($mainDbConn);
    $mainDbConn = false;
}


function QueryMainDb($query)
{
    global $mainDbConn;

    $result = mysql_query($query, $mainDbConn);
    if (!$result)
    {
        if (ini_get('display_errors') == 1)
        {
            echo "<br>$query<br>", mysql_errno(), '<br>';
            die(mysql_error());
        }
    }
    return $result;
}


function CheckNull($value)
{
    if (!is_numeric($value))
        $value = '';

    if ($value == -1)
        $value = '';

    if ($value == '')
        return 'NULL';
    else
        return $value;
}


function CheckNullStr($value)
{
    if (!is_string($value))
        $value = '';

    if ($value == '')
        return 'NULL';
    else
        return "'" . addslashes($value) . "'";
}

function CheckNullDate($value)
{
    if ($value == '' || $value == '0000-00-00 00:00:00')
        return 'NULL';
    else
        return "'" . $value . "'";
}

?>
Avatar billede stieper Nybegynder
06. februar 2006 - 15:44 #13
Ok - prøv at erstatte
$query = "UPDATE `users` SET `userlevel` = '5' WHERE `id` = '$session(userid)'";
$result = QueryMainDb($query);

med:

$sql = "UPDATE `users` SET `userlevel` = '5' WHERE `id` = '$session(userid)'";
QueryMainDb($query);
Avatar billede stieper Nybegynder
06. februar 2006 - 15:45 #14
hov.. koger vist lidt... selvf med:

$sql = "UPDATE `users` SET `userlevel` = '5' WHERE `id` = '$session(userid)'";
QueryMainDb($sql);
Avatar billede -sofus- Nybegynder
06. februar 2006 - 15:51 #15
den opdatere stadig ikke i databasen.

Jeg her smidt en echo $sql på i bunden, så jeg kan se den query den bruger

Og der skrev den ='session(userid)' istedet for det tal der skulle stå, så har skiftet det ud i min kode, men det tal jeg tester med, men der sker stadig intet );
Avatar billede stieper Nybegynder
06. februar 2006 - 15:58 #16
Ok.. lad os prøve "basic strategy" så.

I din test.php fil sætter du // foran require('database.php'); og laver den så den ser således ud:

----test.php-----
<?php
//require('database.php');

$server = "xxxxx";
$username = "xxxxx";
$password = "xxxxx";
$database = "xxxxx";


$conn = mysql_connect("$server", "$username" ,"$password");
mysql_select_db("$database");

$sql = "UPDATE `users` SET `userlevel` = '5' WHERE `id` = '3560'";
$resultat = mysql_query($SQL) or die (mysql_error());
mysql_close();

?>

Og så krydser du fingre for at den opdaterer userlevel for brugeren med id 3560

Ellers skal du tjekke strukturen på din database - specielt at id og userlevel er sat til int eller mediumint...
Avatar billede stieper Nybegynder
06. februar 2006 - 15:59 #17
du skal selvf. selv udfylde felterne for server (eks. localhost), username osv..
Avatar billede stieper Nybegynder
06. februar 2006 - 16:00 #18
----test.php-----
<?php
//require('database.php');

$server = "xxxxx";
$username = "xxxxx";
$password = "xxxxx";
$database = "xxxxx";


$conn = mysql_connect("$server", "$username" ,"$password");
mysql_select_db("$database");

$sql = "UPDATE `users` SET `userlevel` = '5' WHERE `id` = '3560'";
$resultat = mysql_query($sql) or die (mysql_error());
mysql_close();

?>
Avatar billede -sofus- Nybegynder
06. februar 2006 - 16:07 #19
Så fik vi den da endelig til at update (;
Avatar billede -sofus- Nybegynder
06. februar 2006 - 16:13 #20
Så skal vi bare have min session med (;
Avatar billede stieper Nybegynder
06. februar 2006 - 16:15 #21
Hehe.. det var jo altid en start.

Nu ved vi at problemet ligger i den måde database.php virker på.

database.php er skrevet, så du kun skal bruge nogle få funktioner hver gang du vil lave noget i MySQL. - derfor skal du hver gang du vil indsætte, slette, rette osv benytte følgende fremgangsmåde (tror jeg).:

require('database.php');
ConnectMainDb();
$sql = "UPDATE `users` SET `userlevel` = '5' WHERE `id` = '3560'";
QueryMainDb($sql);
CloseMainDb();

$sql kan du ændre fra gang til gang afhængig af, hvad du vil foretage dig i databasen, men de andre funktioner skal benyttes til:
1. at oprette forbindelse til databasen
2. at foretage sql ændring/forespørgsel
3. at lukke forbindelsen igen..
Avatar billede -sofus- Nybegynder
06. februar 2006 - 16:20 #22
Beklager men det virker så heller ikke (;
Avatar billede stieper Nybegynder
06. februar 2006 - 16:24 #23
Der findes også et par andre funktioner i din database.php som kan tjekke for en valid dato, samt at indput til databasen ikke er tomt osv - men jeg foreslår du kigger på dem - ser om du kan gennemskue dem, og ellers læser lidt om dem.

For at få din session med, skal syntaks i $sql ændres lidt...

for at gøre det lidt nemmere med syntaks skriver du lige inden din sql linje:

$session_id = $_SESSION["userid"];

og derefter:
$sql = "UPDATE `users` SET `userlevel` = '5' WHERE `id` = '$session_id'";

så tilsammen kommer din test.php til at se således ud:

--- test.php ---

<?php

require('database.php');

ConnectMainDb();
$session_id = $_SESSION["userid"];
$sql = "UPDATE `users` SET `userlevel` = '5' WHERE `id` = '$session_id'";
QueryMainDb($sql);
CloseMainDb();

?>

--- slut på test.php ---


Så burde det spille ;-)
Avatar billede -sofus- Nybegynder
06. februar 2006 - 16:35 #24
Så ser det endelig ud til at virke.
Avatar billede stieper Nybegynder
06. februar 2006 - 16:36 #25
Det var da godt!

Smider lige et svar for points.
Avatar billede -sofus- Nybegynder
06. februar 2006 - 16:42 #26
Burde næsten give flere point så meget du har hjulet
Avatar billede stieper Nybegynder
06. februar 2006 - 16:44 #27
Det er helt ok - behøves ikke. Er glad for at kunne hjælpe ;-)
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