Probleem met mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Top Low-Code Developer Gezocht!

Bedrijfsomschrijving Unieke Kansen, Uitstekende Arbeidsvoorwaarden & Inspirerend Team Wij zijn een toonaangevende, internationale organisatie die de toekomst van technologie vormgeeft door het creëren van innovatieve en baanbrekende oplossingen. Ons succes is gebaseerd op een hecht en gepassioneerd team van professionals die altijd streven naar het overtreffen van verwachtingen. Als jij deel wilt uitmaken van een dynamische, vooruitstrevende en inspirerende werkomgeving, dan is dit de perfecte kans voor jou! Functieomschrijving Als Low-Code Developer ben je een cruciaal onderdeel van ons team. Je werkt samen met collega's uit verschillende disciplines om geavanceerde applicaties te ontwikkelen en te optimaliseren met behulp van Low-code

Bekijk vacature »

Ventilatiesysteem Productontwikkelaar HBO WO Verwa

Samengevat: Zij bieden flexibele ventilatiematerialen, geluidsdempers, rookgasafvoer producten en industrieslangen. Ben jij een technisch productontwikkelaar? Heb jij ervaring met het ontwikkelen van nieuwe producten? Vaste baan: Technisch Productontwikkelaar HBO WO €3.000 - €4.000 Zij bieden een variëteit aan flexibele ventilatiematerialen, geluiddempers, rookgasafvoer producten, industrieslangen en ventilatieslangen voor de scheepsbouw. Met slimme en innovatieve materialen zorgen wij voor een gezonde en frisse leefomgeving. Deze werkgever is een organisatie die volop in ontwikkeling is met hardwerkende collega's. Dit geeft goede ontwikkelingsmogelijkheden. De branche van dit bedrijf is Techniek en Engineering. Functie: Voor de vacature als Technisch Productontwikkelaar Ede Gld HBO WO ga

Bekijk vacature »

Pagina: « vorige 1 2 3 volgende »

- Ariën  -
Beheerder

- Ariën -

15/05/2022 13:17:58
Quote Anchor link
Als ik naar de manual van mysqli_real_escape_string() kijk, dan zien we dit als opbouw (dit is dus geen PHP-script)
Quote:
mysqli_real_escape_string(mysqli $mysql, string $string): string

Vrij vertaald dijn dit dus twee parameters:
$mysql = De verwijzing naar de connectie in MySQLi.
$string = De string die je wilt escapen.

Jij doet:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
mysqli_real_escape_string( ucfirst(trim($_POST['naam'])) )

Hier mist dus je connectie als argument.

Ook bij je mysqli_query() mist de connectie als argument.

Als je de OO-techniek (Object-oriënted) gebruikt, dan ben je trouwens flexibeler. Dan hoef je niet steeds die connectie als argument te gebruiken. Mijn voorkeur gaat altijd naar de OO-variant van mysqli uit omdat dit al met een (interne) class werkt. Als je gevorderd bent kan je nog altijd meer leuke dingen doen, zoals de class uitbouwen (extenden) of functies clonen.
Gewijzigd op 15/05/2022 13:21:45 door - Ariën -
 
PHP hulp

PHP hulp

20/04/2024 15:43:52
 
Ed Jeurissen

Ed Jeurissen

15/05/2022 13:22:51
Quote Anchor link
Arien, Dit gaat toch niet over mysqli_real_escape_string()! Ik had problemen metmysqli_fetch_assoc. Vergissing?
 
- Ariën  -
Beheerder

- Ariën -

15/05/2022 13:23:48
Quote Anchor link
Weet je dit nog?


Ed Jeurissen op 14/05/2022 21:13:47:
Hallo,

Dat levert de volgende foutmeldingen op:
Warning: mysqli_real_escape_string() expects exactly 2 parameters, 1 given in C:\USB WebServer\root\Youtube11\index3.php on line 33


Zorg dat je uiteindelijk netjes je query werkend hebt, met goede controle, en dan zal je fetch_assoc ook prima werken.

Er zitten wel een hoop fouten in die MySQLi-boilerplate Afbeelding. Veel argumenten missen in de functies.

Ik geloof dat de maker ook op PHPhulp zit. Ik zal dit eens terugkoppelen, en eventueel zelf aanpassen (lang leve GitHub). Het verschil tussen het oude afgeschreven mysql_***() functiebibliotheek en de vervangende mysqli_***() functiebibliotheek is overigens niet bepaald enkel een 'i'-tje toevoegen, wat de auteur van die boilerplate gedaan heeft.
Gewijzigd op 15/05/2022 13:37:40 door - Ariën -
 
Ed Jeurissen

Ed Jeurissen

15/05/2022 13:46:57
Quote Anchor link
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
<?php

require_once('config.php');
$query = "SELECT * FROM 'pagination'";
$result = mysqli_query($con, $query);
print_r($result);

?>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pagination in PHP with Next and Previous</title>
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<body>
    <table class="table table-striped">
        <tr>
            <td>User ID</td>
            <td>User Name</td>
            <td>User Email</td>
        </tr>
        <tr>
            <?php
            
            while($row = mysqli_fetch_assoc($result))
            {

            print_r($row);
            ?>

            <td> <?php echo $row['ID'] ?> </td>
            <td> <?php echo $row['Username'] ?> </td>
            <td> <?php echo $row['Email'] ?> </td>
        </tr>
            <?php

            }

            ?>


</body>
</html>

als ik print_r doe komt er niks uit. Is dat de fout?
 
- Ariën  -
Beheerder

- Ariën -

15/05/2022 13:51:28
Quote Anchor link
Probeer eens var_dump().
Print_r wordt voornamelijk voor array's gebruikt.

Anyway, je controleert hier niet of $result mislukt is. Kijk eens wat mysqli_error($con) te melden heeft.

Voor de liefhebbers: Ik heb de genoemde GitHub boilerplate geforkt in een eigen versie:
https://github.com/arienclaij/sql-boilerplate

Komende tijd (deze week?) hoop ik deze actueel te brengen, en eventueel samen te voegen met de bestaande van WouterJ.
 
Ed Jeurissen

Ed Jeurissen

15/05/2022 14:05:57
Quote Anchor link
var_dump()->bool(false)

mysqli_error($con) levert geen foutmelding.
 
- Ariën  -
Beheerder

- Ariën -

15/05/2022 14:11:02
Quote Anchor link
Hoe heb je nu je controle gebouwd van je query?

Het kan ook zijn dat de connectie niet klopt. Controleer je daar ook op met mysqli_connect_error()?
 
Ed Jeurissen

Ed Jeurissen

15/05/2022 14:17:46
Quote Anchor link
Hoe heb je nu je controle gebouwd van je query?
Volgens mij niet!:

"SELECT * FROM pagination"; Maar ik weet ook niet welke je controle je zou moeten inbouwen?
dit betekent toch geef me alles wat in pagination zit. Maar dat plaatje is er al (een screenprint)

mysqli_connect_error()? -> levert geen foutmelding.
 
- Ariën  -
Beheerder

- Ariën -

15/05/2022 14:19:56
Quote Anchor link
Controleer of je query mislukt...
- Zo ja, toon mysqli_error($con)
- Zo nee, voer een fetch_assoc(..) uit.

Zie ook de structuur in de boilerplate.
Gewijzigd op 15/05/2022 14:20:40 door - Ariën -
 
Ed Jeurissen

Ed Jeurissen

15/05/2022 14:50:53
Quote Anchor link
Fout blijft bestaan!

https://ibb.co/BG7hDxj


Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\USB WebServer\root\Youtube11\index.php on line 35
User ID User Name User Email
 
- Ariën  -
Beheerder

- Ariën -

15/05/2022 14:58:53
Quote Anchor link
Er klopt echt weinig van.
Misschien is het raadzamer om de boilerplate erbij te halen?

Graag ook de code hier in het topic plaatsen ipv als afbeelding.
Gewijzigd op 15/05/2022 15:01:03 door - Ariën -
 
Ed Jeurissen

Ed Jeurissen

15/05/2022 15:03:25
Quote Anchor link
Oeps code
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
<?php

require_once('config.php');
$query = "SELECT * FROM 'pagination'";
$result = mysqli_query($con, $query);

if($con)
{

    mysqli_error($con);
}

else
{
    fetch_assoc($con);
}

?>


<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Pagination in PHP with Next and Previous</title>
    <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css" rel="stylesheet">
<body>
    <table class="table table-striped">
        <tr>
            <td>User ID</td>
            <td>User Name</td>
            <td>User Email</td>
        </tr>
        <tr>
            <?php
            
            while($row = mysqli_fetch_assoc($result))
            {

            print_r($row);
            ?>

            <td> <?php echo $row['ID'] ?> </td>
            <td> <?php echo $row['Username'] ?> </td>
            <td> <?php echo $row['Email'] ?> </td>
        </tr>
            <?php

            }

            ?>


</body>
</html>
 
- Ariën  -
Beheerder

- Ariën -

15/05/2022 15:10:21
Quote Anchor link
Nogmaals, er klopt weinig van die structuur.

- Je kijkt of je connectie ipv je query gelukt is (?), en dan toon je een error? Dat is niet logisch.
- fetch_assoc($con) is onzin, je doet dit al later op de juiste manier.

Zorg voor goede opbouw, dit wat bovenaan staat is echt behoorlijk fout.

Plaats je query gewoon voor je mysqli_fetch_assoc met juiste controle.
Gewijzigd op 15/05/2022 15:12:34 door - Ariën -
 
Ed Jeurissen

Ed Jeurissen

15/05/2022 15:26:25
Quote Anchor link
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
<?php
/*
 * MySQLi CONNECTIE BESTAND
 * In dit bestand maken we de verbinding met een MySQL
 * server doormiddel van MySQLi functies. In deze
 * functie zit meteen het selecteren van een db, dus
 * dat doen we ook meteen.
 */

/* Error-Handling
 * ==============
 * Als eerst maken we een functie voor het beheren van
 * errors. Hiermee kunnen we makkelijk het probleem vinden
 * als er iets mis is.
 * Zodra een script online is wil je niet dat de gebruiker
 * de foutmeldingen krijgt, vandaar dat we hier error_log
 * gebruiken als DEBUG_MODE false is.
 */
// DEBUG_MODE, deze wordt false als het script online geplaatst is

define('DEBUG_MODE', true);

/*
 * We slaan alle errors op in $errors. Deze lezen we in het
 * script uit in via een foreach loop
 */

$errors = Array();

if( DEBUG_MODE )
{
// DEBUG_MODE staat aan
    // Zorg dat we alle errors te zien krijgen

    ini_set('display_errors', 'On');
    error_reporting(E_ALL | E_NOTICE);
}

else
{
    // DEBUG_MODE uit dus geen errors tonen
    ini_set('display_errors', 'Off');
    error_reporting(0);
}

function
SQLerror( $error, $message, $file )
{

    // $error is het resultaat van mysql_error()
    // $message is de tekst die bij de error staat,
    //          deze tekst zullen we gebruiken als DEBUG_MODE uit staat
    // $file is het resultaat van __FILE__ in het bestand van de error

    
    global $errors; // Zorg dat de error variabele die we net hebben gemaakt in deze functie komt

    if( DEBUG_MODE )
    {
# DEBUG_MODE aan => sla de errors op zodat we ze later kunnen tonen
        $errors[] = $message.': '.$error;
    }

    else
    { # DEBUG_MODE uit => log de errors en sla alleen de $message op
        // We slaan niet alleen de error op, maar ook het bestand en de datum

        $log = $file.' ['.date('H:i:s').'] '.$error;
        error_log($log);

        $errors[] = $message;
    }
}


/* CONNECTIE MET MySQL SERVER
 * ==========================
 */

$sqlLink = mysqli_connect('localhost', 'root', 'usbw', 'sr_system');
// Verander de host, inlog naam, wachtwoord en sql-boilerplate (db) in de juiste gegevens

if( $sqlLink === false )
{

    // Als mysqli_connect false returned is er iets mis gegaan, gebruik de net gemaakte error functie
    // Omdat het de connectie betreft gebruiken we mysqli_connect_error()

    SQLerror( mysqli_connect_error(), 'We kunnen geen verbinding aanmaken', __FILE__ );
}

[
/code]

Aangepast. In de boiler krijg ik geen foutmeldingen

[size=xsmall][i]Toevoeging op 15/05/2022 15:34:26:[/i][/size]

Een aanzet zou wel welkom zijn. We zij al bijna hier mee 24 uur verder maar nog geen tip van de sluier. En met tip bedoel ik code!
 
- Ariën  -
Beheerder

- Ariën -

15/05/2022 15:40:29
Quote Anchor link
Je moet niet alleen maar kopiëren en plakken, maar je moet ook goed bewust zijn wat er precies gebeurd en wat je script doet.

Je hebt nu de boilertemplate met de connectie die lijkt te werken.

Nu aan jouw om dit verder uit te bouwen om je data op de juiste manier te tonen. Met mysqli_query, mysqli_num_rows, mysqli_fetch_assoc en mysqli_error. In de boilertemplate vind je ook hoe INSERT, SELECT, UPDATE en DELETE toegepast kunnen worden.
Gewijzigd op 15/05/2022 15:59:02 door - Ariën -
 
Ozzie PHP

Ozzie PHP

15/05/2022 16:11:07
Quote Anchor link
Maak van:

$query = "SELECT * FROM 'pagination'";

eens

$query = "SELECT * FROM pagination";
 
Ed Jeurissen

Ed Jeurissen

15/05/2022 16:34:09
Quote Anchor link
Hoi Ozzie dat had ik al geprobeerd!

Foutmelding blijft

Warning: mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in C:\USB WebServer\root\Youtube11\index.php on line 35
 
- Ariën  -
Beheerder

- Ariën -

15/05/2022 16:46:04
Quote Anchor link
Tja, als je niet controleert wat je query doet blijven we nog heel lang doorgaan.

Misschien is het handig om dit topic van begin af aan even opnieuw door te lezen.

Samenvatting:
Je query mislukt, en je controleert daar niet op. En daarna ga je er maar in je script van uit dat het werkt. Dat is niet de juiste werkwijze.
Gewijzigd op 15/05/2022 16:49:20 door - Ariën -
 
Ed Jeurissen

Ed Jeurissen

15/05/2022 16:57:21
Quote Anchor link
Hoi Hoe moet dat dan?

Toevoeging op 15/05/2022 17:08:54:

Hoe moet ik dan een controle inbouwen?

SELECT * FROM pagination. Dat levert meer resultaen op. Dat is volgens mij de hele tabel. Echter hoe dat er uit moet krijgen ik heb geen idee. Wellicht hebben jullie een voorbeeld?
 
- Ariën  -
Beheerder

- Ariën -

15/05/2022 17:26:02
Quote Anchor link
Kijk eens naar de boilertemplate. Met een simpele if/else structuur op je $result (je mysqli_query)kan je controleren of het werkt.

Bij mysqli_query(...) is het:
False, als het mislukt (toon dan een foutmelding)
Of anders krijg je een result, waarna je verder kan werken met mysqli_fetch_assoc.

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
<?php
// Voer hier query uit
if( $sQuery === false) {
  // De query is niet gelukt, toon error
} else {
  // De query is gelukt. Voer vanaf hier de rest uit!
[/code]

Dit is wat je moet doen......
Gewijzigd op 15/05/2022 17:35:23 door - Ariën -
 

Pagina: « vorige 1 2 3 volgende »



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.