mysqli php probleem

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Kenny iets

kenny iets

28/10/2014 20:39:49
Quote Anchor link
hallo
ik heb van een onze lieve leden
een mysqli oop script gekregen
alleen nu krijg ik allen het woordt array en voor de restniks
dit is me

globaal.php
[spoiler]
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
<?php

// config.php

define('DB_HOST','localhost');
define('DB_USER','root');
define('DB_PASS','');
define('DB_DBASE','kennyvg');

// database.class.php

class mysqlidata
{
    private $link;
    private $result;
    
    function
__construct($host = DB_HOST, $user = DB_USER, $pass = DB_PASS, $dbase = DB_DBASE)
    {

        $this->result = false;
        $this->link = new mysqli($host, $username, $password, $password)
        or die ("can not connect to mysqli server");
        
    }

    
    public function getAll($tablename)
    {

        $array = array();
        
        //als er nog een oude resultset in het geheugen is dan ruimen we die netjes op
        if($this->result)
            $this->result->close();
        
        $this->result = $this->link->query('SELECT * FROM '.$tablename);
        
        //indien de query niet gelukt is geven we een foutmelding
        if(!$this->result)
        {

            echo $this->link->error;
            return $array;
        }

        
        //prop alle rijen in een array
        while($row = $this->result->fetch_assoc())
            $array[] = $row;
            
        return $array;
    }


    public function numRows()
    {

        // even checken of we wel een resultset hebben
        if(!$this->result)
            return false;
            
        return $this->result->num_rows;
    }
}


?>

[/spoiler]
en dit is me index.php

[spoiler]
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php require"globaal.php";
$db = new mysqlidata();
echo($db->getAll('Persons'));
[
/code]
[
/spoiler]

MVG kenny
 
PHP hulp

PHP hulp

27/11/2024 19:10:23
 
Willem vp

Willem vp

28/10/2014 21:31:31
Quote Anchor link
$db->getAll geeft een array terug en die kun je niet tonen met echo.
Als je print_r of var_dump gebruikt (in plaats van echo), zou het wel goed moeten gaan.
 
Kenny iets

kenny iets

28/10/2014 22:24:47
Quote Anchor link
dan is het array()
 
- Ariën  -
Beheerder

- Ariën -

28/10/2014 22:41:42
Quote Anchor link
Dan is deze array leeg.
 
Kenny iets

kenny iets

29/10/2014 17:05:50
Quote Anchor link
mee hoor?
 
- Ariën  -
Beheerder

- Ariën -

29/10/2014 17:21:24
Quote Anchor link
Mee met wat?
 
Kenny iets

kenny iets

29/10/2014 17:49:00
Quote Anchor link
sorry moest "nee hoor" zijn zat op mobiel
 
- Ariën  -
Beheerder

- Ariën -

29/10/2014 18:06:51
Quote Anchor link
als er 'array()' uitkomt, lijkt het me toch echt een lege array....

klopt de tabelnaam misschien wel? Staan er items in?
 
Kenny iets

kenny iets

29/10/2014 18:28:20
Quote Anchor link
der zit wel wat in
http://prntscr.com/50zox9

Toevoeging op 29/10/2014 22:43:33:

ik weet nu dat alles goed staat en dat er wat instaat :)
maar nog steeds krijg ik Array; met printf
met var_dump array(0) { } ;
 
- Ariën  -
Beheerder

- Ariën -

29/10/2014 23:33:53
Quote Anchor link
Waarom is alles NULL? Zet eens gewoon wat fictieve data erin.
 
Peter K

Peter K

30/10/2014 07:25:25
Quote Anchor link
Vul inderdaad eens fictieve data in ipv 'null'.

Als het dan nog niet werkt probeer daarna eens handmatig om een array op het beeld te weergeven met b.v. print_r().

Weet je ook zeker dat de data goed uit de database komt? Aangezien je op regel 27 al een array aanmaakt kan het best zijn dat hij gewoon niet eens gevuld wordt.
Je kunt eventueel dit nog aanpassen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
while($row = $this->result->fetch_assoc())
            $array[] = $row;
?>


naar

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
while($row = $this->result->fetch_assoc())
{

printf("Deze tekst is een test om te zien of de data gefetched wordt.");
   $array[] = $row;
}

?>


Als de tekst nu in beeld komt weet je dat de array normaal gezien gevuld wordt.
Komt het niet in beeld weet je gelijk het probleem!
 
Willem vp

Willem vp

30/10/2014 07:55:07
Quote Anchor link
Sowieso lijkt het me dat PersonID niet null mág zijn. De enige reden dat dat nu kan, is omdat hij niet als primary key is aangemerkt.
 
Kenny iets

kenny iets

30/10/2014 17:10:58
Quote Anchor link
Peter K op 30/10/2014 07:25:25:
Vul inderdaad eens fictieve data in ipv 'null'.

Als het dan nog niet werkt probeer daarna eens handmatig om een array op het beeld te weergeven met b.v. print_r().

Weet je ook zeker dat de data goed uit de database komt? Aangezien je op regel 27 al een array aanmaakt kan het best zijn dat hij gewoon niet eens gevuld wordt.
Je kunt eventueel dit nog aanpassen:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
<?php
while($row = $this->result->fetch_assoc())
            $array[] = $row;
?>


naar

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
while($row = $this->result->fetch_assoc())
{

printf("Deze tekst is een test om te zien of de data gefetched wordt.");
   $array[] = $row;
}

?>


Als de tekst nu in beeld komt weet je dat de array normaal gezien gevuld wordt.
Komt het niet in beeld weet je gelijk het probleem!


komt niet inbeeld :(
 
Kenny iets

kenny iets

05/11/2014 19:56:04
Quote Anchor link
hoe kan ik nu 1 uit de db halen met die ?
 
Willem vp

Willem vp

05/11/2014 20:55:04
Quote Anchor link
select 1;
 
Kenny iets

kenny iets

05/11/2014 21:15:45
Quote Anchor link
ik bedoel
dat je gegevens er uit haalt zonder die array

meerzzo
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
  public function row($input){
    $this->result = $this->link->query('SELECT * FROM nieuw');
     $this->result['$input'];
    }
    
 
Willem vp

Willem vp

05/11/2014 22:17:53
Quote Anchor link
Dat zou je kunnen doen met een $this->result->fetch_field_direct(0)

Overigens is het best wel inefficiënt om een select * te doen als je maar 1 veld gebruikt. Het is een goede gewoonte om elk veld dat je wilt ophalen expliciet te benoemen: "select id from nieuw" of zo. Of, om op je laatste voorbeeld verder te borduren:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
public function getField($fieldname)
{

   $this->result = $this->link->query("SELECT $fieldname FROM nieuw");
   return $this->result->fetch_field_direct(0);
}

?>

Maar het zou zomaar kunnen dat je nog iets anders bedoelt, want je probleemomschrijving is best wel vaag. Dat "zonder die array" kun je al op meerdere manieren opvatten: bedoel je dat je de resultset niet als een array wilt ophalen? (in dat geval kun je die fetch_field_direct gebruiken) of bedoel je dat je de opgehaalde rijen niet naar een array wilt kopiëren, maar dat je slechts 1 rij wilt ophalen? (in dat geval kun je bijvoorbeeld LIMIT 1 toevoegen aan je query)
 



Overzicht Reageren

 
 

Om de gebruiksvriendelijkheid van onze website en diensten te optimaliseren maken wij gebruik van cookies. Deze cookies gebruiken wij voor functionaliteiten, analytische gegevens en marketing doeleinden. U vindt meer informatie in onze privacy statement.