No boolean given
Ziet iemand misschien wat ik fout doe in dit stukje script?
Code (php)
1
2
3
4
2
3
4
<?php
$select = mysqli_query($dbcreat,"SELECT * FROM `berichten` WHERE `aan`='".mysqli_real_escape_string($dbcreat,$data->login)."' ORDER BY `datum` DESC LIMIT 0,$max");
$controle = mysqli_num_rows($select);
?>
$select = mysqli_query($dbcreat,"SELECT * FROM `berichten` WHERE `aan`='".mysqli_real_escape_string($dbcreat,$data->login)."' ORDER BY `datum` DESC LIMIT 0,$max");
$controle = mysqli_num_rows($select);
?>
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, boolean given in /home//domains/.nl/public_html/berichten.php on line 234
en deze error krijg ik met mysqli_error();
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 '' at line 1
mvg.
Toevoeging op 28/02/2015 11:52:05:
ik heb de oplossing gevonden.
$max bestond niet omdat de if($blabla == ""){ }elseif($blabla2){ geen }else{
bevatte dus als er niks overeen kwam met de $blabla en $blabla2 dan was er geen waarde.
Gewijzigd op 28/02/2015 12:12:56 door Eeyk Vd noot
Code (php)
1
2
3
4
2
3
4
<?php
$select = mysqli_query($dbcreat,'SELECT * FROM berichten WHERE `aan`="'.mysqli_real_escape_string($dbcreat,$data->login).'" ORDER BY datum DESC LIMIT 0,10');
$controle = mysqli_num_rows($select);
?>
$select = mysqli_query($dbcreat,'SELECT * FROM berichten WHERE `aan`="'.mysqli_real_escape_string($dbcreat,$data->login).'" ORDER BY datum DESC LIMIT 0,10');
$controle = mysqli_num_rows($select);
?>
Ik neem even aan dat er een verbinding gemaakt is met $dbcreate
ik had een tip gekregen dat je een echo kunt aanmaken.
Code (php)
1
2
3
4
2
3
4
<?php
echo "SELECT * FROM `berichten` WHERE `aan`='".mysqli_real_escape_string($dbcreat,$data->login)."' ORDER BY `datum` DESC LIMIT 0,".$max;
?>
echo "SELECT * FROM `berichten` WHERE `aan`='".mysqli_real_escape_string($dbcreat,$data->login)."' ORDER BY `datum` DESC LIMIT 0,".$max;
?>
en toen kon ik zien dat niet alle waardes waren ingevuld.
thanks.
mvg.
Nee, de quotes stonden wél goed. In SQL gebruik je enkele quotes bij strings. Dubbele quotes zijn bedoeld als escape voor kolomnamen.
Helaas accepteert MySQL ook dubbele quotes om strings aan te duiden, waardoor die irritante backtics geïntroduceerd moesten worden om kolomnamen te escapen. Maar we hadden al eerder geconstateerd dat MySQL het niet zo nauw neemt met de SQL-standaards...
Alhoewel MySQL dus zowel dubbele als enkele quotes kan gebruiken bij strings, zou ik toch adviseren om alleen enkele te gebruiken, zodat je het dichtst bij de SQL-standaard blijft. Dat is altijd handig als je ooit eens zou besluiten om een ander DBMS te gaan gebruiken, of wanneer iemand het in zijn hoofd krijgt om een SET SQL_MODE=ANSI_QUOTES te doen.