mysqli_num_rows($rResult) == 0
Ik heb een script om nieuwsberichten te kunnen plaatsen, maar het kan ook zijn dat er nog geen nieuws is, en bijgevolg de database nog leeg. Daar om heb ik het volgende stukje script opgenomen:
Code (php)
1
2
2
elseif ( mysqli_num_rows($rResult) == 0 ) {
$aErrors[] = 'Er zijn geen nieuwsberichten!';
$aErrors[] = 'Er zijn geen nieuwsberichten!';
Ik krijg nu de foutmelding: "Warning: mysqli_query() expects parameter 1 to be mysqli, ".
In de oude versie had ik hier staan:
Code (php)
1
2
2
elseif ( mysql_num_rows($rResult) == 0 ) {
$aErrors[] = 'Er zijn geen nieuwsberichten!';
$aErrors[] = 'Er zijn geen nieuwsberichten!';
Voor wat ik met al jullie hulp en goede raad gevonden heb is hier de toevoeging i voldoende. Wat gaat hier fout?
Heb je al gezocht wat die foutmelding inhoudt?
Hier kan het toevoegen van alleen de i voldoende zijn, maar heb het idee dat de foutmelding op een andere regel betrekking heeft.
Gewijzigd op 02/04/2014 18:09:12 door Obelix Idefix
Tot aan lijn 15 is de code:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
$aErrors = array();
require_once ('script/db_config.php');
// Construeer een opdracht voor de database
$sQuery = "SELECT nieuws_id,
titel,
bericht,
datum
FROM nieuws
ORDER BY nieuws_id DESC";
// Stuur de opdracht op
$rResult = mysqli_query( $rLink, $sQuery );
require_once ('script/db_config.php');
// Construeer een opdracht voor de database
$sQuery = "SELECT nieuws_id,
titel,
bericht,
datum
FROM nieuws
ORDER BY nieuws_id DESC";
// Stuur de opdracht op
$rResult = mysqli_query( $rLink, $sQuery );
Warning: mysqli_num_rows() expects parameter 1 to be mysqli_result, null given in /home/.../nieuws.inc.php on line 20
En op lijn 20 staat de elseif-code zoals in de vraag benoemd.
Ik heb gegoocheld op die foutmelding, maar kom er niet achter en voor wat ik kan vinden zou ik de omzetting goed gedaan moeten hebben.
Gewijzigd op 02/04/2014 18:34:04 door tortuga web
Gewijzigd op 02/04/2014 18:39:32 door Obelix Idefix
Ja, de eerste if, dus voordat de elseif komt controleert de verbinding met de database, dus die is er. De fout zit m in de elseif, maar ik snap m niet
Tortuga web op 02/04/2014 18:47:38:
Ja, de eerste if, dus voordat de elseif komt controleert de verbinding met de database, dus die is er. De fout zit m in de elseif, maar ik snap m niet
Ik zie geen if in de code staan. Ik ga er van uit dat die op regel 16 begint (aangezien de elseif doorgaans er na komt).
De foutmelding geeft aan dat de fout op regel 15 zit, dus voor de elseif en ook voor de if. Als je die 1e foutmelding oplost, zal de 2e foutmelding (over regel 20, de elseif) vermoedelijk ook opgelost zijn.
Blijft voor mij de vraag wat er zit in $rLink
Gezien de foutmelding (mysqli_query() expects parameter 1 to be mysqli, resource given) wordt daar niet het juiste meegegeven.
Vandaar de vraag: is er een databaseverbinding?
Tortuga web op 02/04/2014 17:53:23:
Warning: mysqli_query() expects parameter 1 to be mysqli
Het kan nooit al te moeilijk zijn.
Uiteindelijk moet je iets hebben als:
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
<?php
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if ($result = mysqli_query($link, "SELECT Code, Name FROM Country ORDER BY Name")) {
/* determine number of rows result set */
$row_cnt = mysqli_num_rows($result);
printf("Result set has %d rows.\n", $row_cnt);
/* close result set */
mysqli_free_result($result);
}
?>
$link = mysqli_connect("localhost", "my_user", "my_password", "world");
/* check connection */
if (mysqli_connect_errno()) {
printf("Connect failed: %s\n", mysqli_connect_error());
exit();
}
if ($result = mysqli_query($link, "SELECT Code, Name FROM Country ORDER BY Name")) {
/* determine number of rows result set */
$row_cnt = mysqli_num_rows($result);
printf("Result set has %d rows.\n", $row_cnt);
/* close result set */
mysqli_free_result($result);
}
?>
Die $result is bij jou niet geldig.
Mogelijke oorzaken:
- Je probeert de $result variabele buiten de scope te gebruiken. (binnen een (andere) functie misschien).
- Je query is mislukt waardoor de teruggegeven $result de waarde FALSE heeft gekregen. Je kunt dat checken met
Gewijzigd op 02/04/2014 19:16:29 door Frank Nietbelangrijk
Tjonge, het valt me nog niet mee, al dat scripten...
Zorg dat je goed naleest wat iedere functie die je aanroept ( zoals mysql_connect() en mysql_query() ) als mogelijk resultaat terug kunnen geven. dat staat op de PHP website voor iedere functie aangegeven. Bouw aan de hand daarvan dus inderdaad foutafhandeling in zodat het zichtbaar wordt als er iets niet goed gaat. Dat scheelt een boel zoekwerk.
Ger van Steenderen op 03/04/2014 09:00:06:
$GLOBALS['mysqli']-> bedoel je. $mysqli bestaat binnen functies niet, $GLOBALS wel.
Gewijzigd op 03/04/2014 09:25:23 door Dos Moonen