Probleem met mysqli_fetch_assoc() expects parameter 1 to be mysqli_result, boolean given in
Pagina: « vorige 1 2 3 volgende »
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:
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 -
Arien, Dit gaat toch niet over mysqli_real_escape_string()! Ik had problemen metmysqli_fetch_assoc. Vergissing?
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
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 . 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 -
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
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>
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?
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.
mysqli_error($con) levert geen foutmelding.
Het kan ook zijn dat de connectie niet klopt. Controleer je daar ook op met mysqli_connect_error()?
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.
- 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 -
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
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 -
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
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>
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>
- 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 -
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
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
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!
/*
* 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!
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 -
$query = "SELECT * FROM 'pagination'";
eens
$query = "SELECT * FROM pagination";
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
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 -
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?
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)
Gewijzigd op 15/05/2022 17:35:23 door - Ariën -