mysqli php probleem
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)
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
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;
}
}
?>
// 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]
Als je print_r of var_dump gebruikt (in plaats van echo), zou het wel goed moeten gaan.
dan is het array()
Dan is deze array leeg.
mee hoor?
Mee met wat?
sorry moest "nee hoor" zijn zat op mobiel
klopt de tabelnaam misschien wel? Staan er items 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) { } ;
Waarom is alles NULL? Zet eens gewoon wat fictieve data erin.
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:
naar
Code (php)
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!
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.
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:
naar
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!
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:
naar
Code (php)
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 :(
hoe kan ik nu 1 uit de db halen met die ?
select 1;
dat je gegevens er uit haalt zonder die array
meerzzo
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)
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)