Mysqli_num_rows fatal error
Hallo,
Ik krijg een foutmelding als ik een simpele mysqli_num_rows query wil uitvoeren...
Dit doe ik:
Deze error krijg ik:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in (site) on line 84
FOUT: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'left WHERE gebruikerid='2'' at line 1
Uit deze foutmelding kan ik alleen verstaan dat er iets met mijn database is wat waarschijnlijk niet goed is.
Dit is de db code:
Ik hoop dat jullie mij kunnen helpen!
Alvast bedankt.
Mvg,
Nick
Ik krijg een foutmelding als ik een simpele mysqli_num_rows query wil uitvoeren...
Dit doe ik:
Code (php)
1
2
3
4
2
3
4
<?php
$get = mysqli_query($con, "SELECT id, gebruikerid, twitter, nieuwstereacties, voorgeschrevenlijsten, whatshot, leukefilmpjes, tags FROM left WHERE gebruikerid='".mysqli_real_escape_string($con,$_SESSION['id'])."'");
$numrows = mysqli_num_rows($got) or die('FOUT: '.mysqli_error($con));
?>
$get = mysqli_query($con, "SELECT id, gebruikerid, twitter, nieuwstereacties, voorgeschrevenlijsten, whatshot, leukefilmpjes, tags FROM left WHERE gebruikerid='".mysqli_real_escape_string($con,$_SESSION['id'])."'");
$numrows = mysqli_num_rows($got) or die('FOUT: '.mysqli_error($con));
?>
Deze error krijg ik:
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in (site) on line 84
FOUT: You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'left WHERE gebruikerid='2'' at line 1
Uit deze foutmelding kan ik alleen verstaan dat er iets met mijn database is wat waarschijnlijk niet goed is.
Dit is de db code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
--
-- Tabelstructuur voor tabel `left`
--
CREATE TABLE IF NOT EXISTS `left` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`gebruikerid` int(10) NOT NULL,
`twitter` varchar(99) NOT NULL,
`nieuwstereacties` varchar(99) NOT NULL,
`voorgeschrevenlijsten` varchar(99) NOT NULL,
`whatshot` varchar(99) NOT NULL,
`leukefilmpjes` varchar(99) NOT NULL,
`tags` varchar(99) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
-- Tabelstructuur voor tabel `left`
--
CREATE TABLE IF NOT EXISTS `left` (
`id` int(10) NOT NULL AUTO_INCREMENT,
`gebruikerid` int(10) NOT NULL,
`twitter` varchar(99) NOT NULL,
`nieuwstereacties` varchar(99) NOT NULL,
`voorgeschrevenlijsten` varchar(99) NOT NULL,
`whatshot` varchar(99) NOT NULL,
`leukefilmpjes` varchar(99) NOT NULL,
`tags` varchar(99) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=2 ;
Ik hoop dat jullie mij kunnen helpen!
Alvast bedankt.
Mvg,
Nick
"left" is een reserved word in MySQL die moet je dus NIET gebruiken als tabel- of kolomnaam.
http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html
http://dev.mysql.com/doc/refman/5.6/en/reserved-words.html
Is het ook niet mysqli_num_rows($get) ipv $got???
mysqli_error gebruik je als je query uitvoeren mislukt (mysqli_query)
niet als de gevonden resultset niet uit te lezen is. Daar kan niet zo veel meer mee misgaan.
(als je al weet dat het een resultset is omdat je select query gelukt was.)
sterker: als er 0 rows gevonden zijn, dan is de query op zich gelukt, maar zal mysqli_num_rows 0 zijn
dat lijkt weer of false, waarna je alsnog een error zou proberen te tonen over een prima query.
niet als de gevonden resultset niet uit te lezen is. Daar kan niet zo veel meer mee misgaan.
(als je al weet dat het een resultset is omdat je select query gelukt was.)
sterker: als er 0 rows gevonden zijn, dan is de query op zich gelukt, maar zal mysqli_num_rows 0 zijn
dat lijkt weer of false, waarna je alsnog een error zou proberen te tonen over een prima query.
Dat snap ik ivo maar ik kreeg alleen maar een fatal error en uit ie fatal error kom je er niet uit. De vorige keer zeiden jullie dat ik moest debuggen dat heb ik nu gedaan en het werkt een stuk beter! Bedankt allemaal.
Je hebt twee fouten gemaakt.
Error
Eerste fout, je moet left niet als een table naam gebruiken.
Warning
Tweede je moet $get in plaats van $got gebruiken.
$get = mysqli_query($con, "SELECT id, gebruikerid, twitter, nieuwstereacties, voorgeschrevenlijsten, whatshot, leukefilmpjes, tags FROM left WHERE gebruikerid='".mysqli_real_escape_string($con,$_SESSION['id'])."'");
$numrows = mysqli_num_rows($got) or die('FOUT: '.mysqli_error($con));
?>
Error
Eerste fout, je moet left niet als een table naam gebruiken.
Warning
Tweede je moet $get in plaats van $got gebruiken.
$get = mysqli_query($con, "SELECT id, gebruikerid, twitter, nieuwstereacties, voorgeschrevenlijsten, whatshot, leukefilmpjes, tags FROM left WHERE gebruikerid='".mysqli_real_escape_string($con,$_SESSION['id'])."'");
$numrows = mysqli_num_rows($got) or die('FOUT: '.mysqli_error($con));
?>
Ja dat zag ik ook maar ik had mijn script ff snel voor hier aangepast omdat ik eerst dit had:
Ik had het ff zo aangepast om te kijken of er mischien ook wat was met de $get.
maar daar was niks mee
Code (php)
1
2
3
4
5
2
3
4
5
<?php
$get = "SELECT id, gebruikerid, twitter, nieuwstereacties, voorgeschrevenlijsten, whatshot, leukefilmpjes, tags FROM left WHERE gebruikerid='".mysqli_real_escape_string($con,$_SESSION['id'])."'";
$got = mysqli_query($con, $get);
$numrows = mysqli_num_rows($got) or die('FOUT: '.mysqli_error($con));
?>
$get = "SELECT id, gebruikerid, twitter, nieuwstereacties, voorgeschrevenlijsten, whatshot, leukefilmpjes, tags FROM left WHERE gebruikerid='".mysqli_real_escape_string($con,$_SESSION['id'])."'";
$got = mysqli_query($con, $get);
$numrows = mysqli_num_rows($got) or die('FOUT: '.mysqli_error($con));
?>
Ik had het ff zo aangepast om te kijken of er mischien ook wat was met de $get.
maar daar was niks mee
Fout 3: Je moet nooit een script aanpassen om hier neer te zetten :-)
Behalve wachtwoorden natuurlijk.
Behalve wachtwoorden natuurlijk.
or die('FOUT: '.mysqli_error($con));
die gebruik je niet na mysqli_num_rows.
je kunt beter intval gebruiken want gebruikerid is een integer en niet een string
dus zo.
die gebruik je niet na mysqli_num_rows.
je kunt beter intval gebruiken want gebruikerid is een integer en niet een string
dus zo.
Quote:
Gewijzigd op 26/01/2014 15:19:22 door Simo Mr
intval() maakt van 'alsdfjlaskdjflka' waarschijnlijk 0
wil je dat er dan ineens op een andere id dan voorzien gezocht wordt?
wil je dat er dan ineens op een andere id dan voorzien gezocht wordt?
Ivo P op 26/01/2014 15:42:19:
intval() maakt van 'alsdfjlaskdjflka' waarschijnlijk 0
wil je dat er dan ineens op een andere id dan voorzien gezocht wordt?
wil je dat er dan ineens op een andere id dan voorzien gezocht wordt?
nee gebruikerid is een integer.
`gebruikerid` int(10) NOT NULL,




