Avatar billede ksdenmark Nybegynder
28. maj 2013 - 22:33 Der er 6 kommentarer og
1 løsning

PHP / mysql / mysqli

Hej
Jeg sidder og har lavet lidt PHP idag men jeg ville begynde lidt på noget mysqli... og af en eller anden grund kan jeg over hovede ikke finde hovde og hale i det... jeg har lavet en MEGET basic function, men der går noget galt under vejs. håber der er en der kan forklare mig hvad der går galt.. ?



    define("HOST", "localhost");
    define("USER", "root");
    define("PASSWORD", "PASS");
    define("DATABASE", "folk");
   
    $mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
    if ($mysqli->connect_errno) {
        echo $connect_error;
        exit();
    }


function user_count(){
       
        $stmt = $mysqli->query("SELECT COUNT(`user_id`) as `user_count` FROM `users` WHERE `active` = 1")
        $stmt->execute();
        $stmt->bind_result($result);
        $stmt->fetch();

        if (empty($result))
        {
            return false;
        }
        else
        {
            return $result;
        }
           
    }


echo user_count();



Håber en kan hjælpe mig på rette spor her.. :-)
Avatar billede olsensweb.dk Ekspert
28. maj 2013 - 22:46 #1
hurtigt set, din database connection findes ikke inde i functionen, den skal med over som parameter
function user_count($mysqli){

og kaldet af functionen skal selvføgelig også rettes til
echo user_count($mysqli);
Avatar billede NielsErikP Mester
28. maj 2013 - 22:50 #2
Hej...

Prøv evt. at læse olebole's guide : her
Avatar billede ksdenmark Nybegynder
28. maj 2013 - 22:51 #3
Kunne ikke være mere rigtigt.. :-)

Jeg troede at "$mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);" var global så jeg kunne fange den alle vegne.. :)

Tusinde tak men jeg kan ikke give dig dine point da du har skrevet dette som en kommentar.. :(
Avatar billede scootergrisen Nybegynder
28. maj 2013 - 23:05 #4
Måske skal :
  if ($mysqli->connect_errno) {
Rettes til :
  if ($mysqli->connect_errno > 0) {

Ret :
  echo $connect_error;
Til :
  echo $mysqli->connect_error

Også i stedet for "return false;" så kan du skrive en besked om at værdien er tom så du ved det at den er tom.
Avatar billede jakobdo Ekspert
29. maj 2013 - 08:15 #5
Du kunne også snyde lidt med:

function user_count(){
global $mysqli;

Så vil din nuværende kode virke uden problemer.
Avatar billede olsensweb.dk Ekspert
29. maj 2013 - 09:03 #6
#3 >men jeg kan ikke give dig dine point da du har skrevet dette som en kommentar
jeg ligger næsten altid kun kommentar, og først svar når jeg bliver bedt om det.
i dette tilfælde, gider jeg ikke have point for så lidt, du har vist mere brug for dem end mig.
lig selv et svar og accepter, så tråden lukkes

#5 >Du kunne også snyde lidt med:
generalt vil jeg fraråde at bruge global, da man kan midste overblikket over hvad der påvirker variablen
det er også en uskik at bruge global, men ja det vil virke
Avatar billede ksdenmark Nybegynder
31. maj 2013 - 15:54 #7
Ronols:

Jamen jeg takker meget for det hurtige svar og meget simple løsning... kunne ikke være bedre

SVAR:



    define("HOST", "localhost");
    define("USER", "root");
    define("PASSWORD", "PASS");
    define("DATABASE", "folk");
   
    $mysqli = new mysqli(HOST, USER, PASSWORD, DATABASE);
    if ($mysqli->connect_errno) {
        echo $connect_error;
        exit();
    }


function user_count($mysqli){
       
        $stmt = $mysqli->query("SELECT COUNT(`user_id`) as `user_count` FROM `users` WHERE `active` = 1")
        $stmt->execute();
        $stmt->bind_result($result);
        $stmt->fetch();

        if (empty($result))
        {
            return false;
        }
        else
        {
            return $result;
        }
           
    }


echo user_count($mysqli);

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

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