Azelz schreef:Iets met indexingIk heb een database met 15 miljoen rows, is er een manier om via PHP snel door die database heen te gaan ? Als ik nu zoek in die database duurt het +/- 20 seconden.
Kleine Vragen Topic #4
Misschien een domme opmerking, maar hij zal toch altijd die 15 miljoen rows af moeten zoeken om de juiste eruit te vissen? 

Dylan schreef:Thanks, nu zoekt die in de database binnen 1 secondeIets met indexingEerdere citaten tonen
Azelz schreef:Ik heb een database met 15 miljoen rows, is er een manier om via PHP snel door die database heen te gaan ? Als ik nu zoek in die database duurt het +/- 20 seconden.

Stef schreef:Zie het als het doorbladeren van een boek totdat je het juiste vind wat je zoekt. 15 mln record duurt dan wat langer. Maar als je een index/indice aanmaakt in je database, dan wordt er een index aangelegd zodat de database weet waar hij moet zoeken, wat dus sneller gaat.Misschien een domme opmerking, maar hij zal toch altijd die 15 miljoen rows af moeten zoeken om de juiste eruit te vissen?
Azelz schreef:Als je uitgebreide queries moet uitvoeren zou je ook kunnen kijken naar een stored procedure. Deze werkt op DB niveau waardoor hij sneller is.Thanks, nu zoekt die in de database binnen 1 secondeEerdere citaten tonen
Dylan schreef:Iets met indexingEerdere citaten tonen
Azelz schreef:Ik heb een database met 15 miljoen rows, is er een manier om via PHP snel door die database heen te gaan ? Als ik nu zoek in die database duurt het +/- 20 seconden.
Ik loop helemaal vast 
Ik heb een formuliertje met een checkboxen die moeten in de db worden toegevoegd, per checkbox 1 tabel.
Nu heb ik dit:
Het formulier:
Als hij verzonden is:
Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if(isset($_POST[koppelVliegtuig])){ // Ik weet dat het eigenlijk anders moet :S
$gekoppeld = $_POST[koppelVliegtuig];
$routeid = $db->real_escape_string($_POST[routeid]);
foreach($gekoppeld as $koppel) {
$query = $db->query("INSERT INTO routes_gekoppeld (uid,vid,rid) VALUES (".$_SESSION[id].", ".$koppel.", ".$routeid.")");
if($query){
echo succes;
}
}
}
Maar nu heb ik al uitgevonden dat het geen array is? En als ik
$gekoppeld = array($_POST[koppelVliegtuig]);
doe dan krijg ik dit:
succes
Array ( [0] => )
En dit komt er in de DB:
UID: 1, VID: 0, RID: 1,
Terwijl VID 1 moet zijn en er hoort er nog 1 bij te staan met VID: 3 omdat ik er 2 heb geselecteerd?
Ik snap er niks meer van

Ik heb een formuliertje met een checkboxen die moeten in de db worden toegevoegd, per checkbox 1 tabel.
Nu heb ik dit:
Het formulier:
<form action="" method="POST">
[COLOR= #0000BB]<?php
$getVliegtuigen[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]->[/COLOR]query[COLOR= #007700]([/COLOR][COLOR= #DD0000]"SELECT * FROM vliegtuigen WHERE uid = "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$_SESSION[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]" AND gekoppeld = 0"[/COLOR][COLOR= #007700]);[/COLOR]
[URL="http://www.php.net/while"]while[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$fetchVliegtuigen[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$getVliegtuigen[/COLOR][COLOR= #007700]->[/COLOR]fetch_array[COLOR= #007700]()){[/COLOR]
?>
<input type="checkbox" value="[COLOR= #0000BB]<?php[/COLOR] [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #0000BB]$fetchVliegtuigen[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]];[/COLOR] ?>" class="" name="koppelVliegtuig[]"> [COLOR= #0000BB]<?php[/COLOR] [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #0000BB]$fetchVliegtuigen[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]registratie[/COLOR][COLOR= #007700]];[/COLOR] ?>
[COLOR= #0000BB]<?php[/COLOR] [COLOR= #007700]}[/COLOR] ?>
<input type="number" name="routeid" value="[COLOR= #0000BB]<?php[/COLOR] [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #0000BB]$fetchRoute[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]];[/COLOR] ?>" style="display:none;">
<button class="btn btn-success" name="koppelVliegtuig" type="submit">Koppelen</button>
</form> Als hij verzonden is:
Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
if(isset($_POST[koppelVliegtuig])){ // Ik weet dat het eigenlijk anders moet :S
$gekoppeld = $_POST[koppelVliegtuig];
$routeid = $db->real_escape_string($_POST[routeid]);
foreach($gekoppeld as $koppel) {
$query = $db->query("INSERT INTO routes_gekoppeld (uid,vid,rid) VALUES (".$_SESSION[id].", ".$koppel.", ".$routeid.")");
if($query){
echo succes;
}
}
}
Maar nu heb ik al uitgevonden dat het geen array is? En als ik
$gekoppeld = array($_POST[koppelVliegtuig]);
doe dan krijg ik dit:
succes
Array ( [0] => )
En dit komt er in de DB:
UID: 1, VID: 0, RID: 1,
Terwijl VID 1 moet zijn en er hoort er nog 1 bij te staan met VID: 3 omdat ik er 2 heb geselecteerd?
Ik snap er niks meer van

Doe eens [c]var_dump($_POST[koppelVliegtuig]);[/c]
Milan schreef:Quote:Doe eens [c]var_dump($_POST[koppelVliegtuig]);[/c]
succes
string(0) ""
[COLOR= #0000BB]<?php[/COLOR]
[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]koppelVliegtuig[/COLOR][COLOR= #007700]])){[/COLOR]
[COLOR= #0000BB]$gekoppeld[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]koppelVliegtuig[/COLOR][COLOR= #007700]]);[/COLOR]
[COLOR= #0000BB]$routeid[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]->[/COLOR]real_escape_string[COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]routeid[/COLOR][COLOR= #007700]]);[/COLOR]
[URL="http://www.php.net/foreach"]foreach[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$gekoppeld[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$koppel[/COLOR][COLOR= #007700]) {[/COLOR]
[COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]->[/COLOR]query[COLOR= #007700]([/COLOR][COLOR= #DD0000]"INSERT INTO routes_gekoppeld (uid,vid,rid) VALUES ("[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$_SESSION[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]", "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$koppel[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]", "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$routeid[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]")"[/COLOR][COLOR= #007700]);[/COLOR]
[URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700]){[/COLOR]
[URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]succes<Br />[/COLOR][COLOR= #007700];
}
}[/COLOR]
[URL="http://www.php.net/var_dump"]var_dump[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]koppelVliegtuig[/COLOR][COLOR= #007700]]);
}[/COLOR] GEFIXED
Ik weet niet hoe het kan maar ik heb de variable van koppelVliegtuig naar koppel veranderd en toen deed ie het?
Kan iemand dit uitleggen?
Jesper schreef:Het is uberhaupt al raar dat de $_POST geen array teruggeeft omdat je dit wel aangeeft door ditQuote:Eerdere citaten tonen
Milan schreef:Doe eens [c]var_dump($_POST[koppelVliegtuig]);[/c]
succes
string(0) ""[COLOR= #0000BB]<?php[/COLOR] [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]koppelVliegtuig[/COLOR][COLOR= #007700]])){[/COLOR] [COLOR= #0000BB]$gekoppeld[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]koppelVliegtuig[/COLOR][COLOR= #007700]]);[/COLOR] [COLOR= #0000BB]$routeid[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]->[/COLOR]real_escape_string[COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]routeid[/COLOR][COLOR= #007700]]);[/COLOR] [URL="http://www.php.net/foreach"]foreach[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$gekoppeld[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$koppel[/COLOR][COLOR= #007700]) {[/COLOR] [COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]->[/COLOR]query[COLOR= #007700]([/COLOR][COLOR= #DD0000]"INSERT INTO routes_gekoppeld (uid,vid,rid) VALUES ("[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$_SESSION[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]", "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$koppel[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]", "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$routeid[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]")"[/COLOR][COLOR= #007700]);[/COLOR] [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700]){[/COLOR] [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]succes<Br />[/COLOR][COLOR= #007700]; } }[/COLOR] [URL="http://www.php.net/var_dump"]var_dump[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]koppelVliegtuig[/COLOR][COLOR= #007700]]); }[/COLOR]
GEFIXED
Ik weet niet hoe het kan maar ik heb de variable van koppelVliegtuig naar koppel veranderd en toen deed ie het?
Kan iemand dit uitleggen?
koppelVliegtuig[] als naam op te geven. de [] wil namelijk zeggen dat het een array moet zijn.
Daarnaast dat het verkeerd ging kan zijn omdat de variabele overschreven worden. of er gaat iets anders mis. Maar ik kan persoonlijk niet zeggen wat er mis gaat als ik het niet kan testen

Keffe schreef:De submit button heet ook koppelVliegtuig, dus hij werd inderdaad overschrevenHet is uberhaupt al raar dat de $_POST geen array teruggeeft omdat je dit wel aangeeft door ditEerdere citaten tonen
Jesper schreef:Quote:Eerdere citaten tonen
Milan schreef:Doe eens [c]var_dump($_POST[koppelVliegtuig]);[/c]
succes
string(0) ""[COLOR= #0000BB]<?php[/COLOR] [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]koppelVliegtuig[/COLOR][COLOR= #007700]])){[/COLOR] [COLOR= #0000BB]$gekoppeld[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]koppelVliegtuig[/COLOR][COLOR= #007700]]);[/COLOR] [COLOR= #0000BB]$routeid[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]->[/COLOR]real_escape_string[COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]routeid[/COLOR][COLOR= #007700]]);[/COLOR] [URL="http://www.php.net/foreach"]foreach[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$gekoppeld[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$koppel[/COLOR][COLOR= #007700]) {[/COLOR] [COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]->[/COLOR]query[COLOR= #007700]([/COLOR][COLOR= #DD0000]"INSERT INTO routes_gekoppeld (uid,vid,rid) VALUES ("[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$_SESSION[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]", "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$koppel[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]", "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$routeid[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]")"[/COLOR][COLOR= #007700]);[/COLOR] [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700]){[/COLOR] [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]succes<Br />[/COLOR][COLOR= #007700]; } }[/COLOR] [URL="http://www.php.net/var_dump"]var_dump[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]koppelVliegtuig[/COLOR][COLOR= #007700]]); }[/COLOR]
GEFIXED
Ik weet niet hoe het kan maar ik heb de variable van koppelVliegtuig naar koppel veranderd en toen deed ie het?
Kan iemand dit uitleggen?
koppelVliegtuig[] als naam op te geven. de [] wil namelijk zeggen dat het een array moet zijn.
Daarnaast dat het verkeerd ging kan zijn omdat de variabele overschreven worden. of er gaat iets anders mis. Maar ik kan persoonlijk niet zeggen wat er mis gaat als ik het niet kan testen

Bartv schreef:Kijk vandaar dus hahaDe submit button heet ook koppelVliegtuig, dus hij werd inderdaad overschrevenEerdere citaten tonen
Keffe schreef:Het is uberhaupt al raar dat de $_POST geen array teruggeeft omdat je dit wel aangeeft door ditEerdere citaten tonen
Jesper schreef:Quote:Eerdere citaten tonen
Milan schreef:Doe eens [c]var_dump($_POST[koppelVliegtuig]);[/c]
succes
string(0) ""[COLOR= #0000BB]<?php[/COLOR] [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][URL="http://www.php.net/isset"]isset[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]koppelVliegtuig[/COLOR][COLOR= #007700]])){[/COLOR] [COLOR= #0000BB]$gekoppeld[/COLOR] [COLOR= #007700]=[/COLOR] [URL="http://www.php.net/array"]array[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]koppelVliegtuig[/COLOR][COLOR= #007700]]);[/COLOR] [COLOR= #0000BB]$routeid[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]->[/COLOR]real_escape_string[COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]routeid[/COLOR][COLOR= #007700]]);[/COLOR] [URL="http://www.php.net/foreach"]foreach[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$gekoppeld[/COLOR] [COLOR= #007700]as[/COLOR] [COLOR= #0000BB]$koppel[/COLOR][COLOR= #007700]) {[/COLOR] [COLOR= #0000BB]$query[/COLOR] [COLOR= #007700]=[/COLOR] [COLOR= #0000BB]$db[/COLOR][COLOR= #007700]->[/COLOR]query[COLOR= #007700]([/COLOR][COLOR= #DD0000]"INSERT INTO routes_gekoppeld (uid,vid,rid) VALUES ("[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$_SESSION[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]id[/COLOR][COLOR= #007700]].[/COLOR][COLOR= #DD0000]", "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$koppel[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]", "[/COLOR][COLOR= #007700].[/COLOR][COLOR= #0000BB]$routeid[/COLOR][COLOR= #007700].[/COLOR][COLOR= #DD0000]")"[/COLOR][COLOR= #007700]);[/COLOR] [URL="http://www.php.net/if"]if[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$query[/COLOR][COLOR= #007700]){[/COLOR] [URL="http://www.php.net/echo"]echo[/URL] [COLOR= #DD0000]succes<Br />[/COLOR][COLOR= #007700]; } }[/COLOR] [URL="http://www.php.net/var_dump"]var_dump[/URL][COLOR= #007700]([/COLOR][COLOR= #0000BB]$_POST[/COLOR][COLOR= #007700][[/COLOR][COLOR= #DD0000]koppelVliegtuig[/COLOR][COLOR= #007700]]); }[/COLOR]
GEFIXED
Ik weet niet hoe het kan maar ik heb de variable van koppelVliegtuig naar koppel veranderd en toen deed ie het?
Kan iemand dit uitleggen?
koppelVliegtuig[] als naam op te geven. de [] wil namelijk zeggen dat het een array moet zijn.
Daarnaast dat het verkeerd ging kan zijn omdat de variabele overschreven worden. of er gaat iets anders mis. Maar ik kan persoonlijk niet zeggen wat er mis gaat als ik het niet kan testen
Ik heb een hele lijst met fb IDs die mijn keyword leuk vinden. Ik wil ze allemaal uitnodigen mijn pagina te liken. Daarvoor moeten ze eerst vrienden met mij worden. Hoe kan ik makkelijk al deze personen toevoegen als vriend?
De namen en IDs zijn in een .txt bestand.
De namen en IDs zijn in een .txt bestand.
Wij hadden vandaag een web toets waarin we bestanden moesten gebruiken waarin functies stonden die we moesten gebruiken:
Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//De functie MaakInactief zorgt ervoor dat een nummer niet nogmaals gebruikt kan worden door hem inactief te maken
//Parameter 1 = De (link) connectie naar de database
//Parameter 2 = Het nummer wat op inactief gezet moet worden
//return = 1 als het gelukt is en 0 als het niet gelukt is
function MaakInactief($link, $nummer) {
$s="update nummers set actief=0 where nummer=$nummer";
$rows=mysqli_query($link, $s);
return mysqli_affected_rows($link);
}
//De functie CheckNummer controleert of een nummer een winnend nummer is
//Parameter 1 = De (link) connectie naar de database
//Parameter 2 = Het nummer wat gecontroleerd moet worden
//return = 1 als het nummer een winnend nummer is en 0 als het geen winnend nummer is
function CheckNummer($link, $nummer) {
if (!$nummer) return 0;
$s="select actief from nummers where nummer=$nummer and actief=1";
$rows=mysqli_query($link, $s);
return mysqli_num_rows($rows);
}
?>
Maar deze code werkte niet bij mij; ik moest quotes toevoegen aan de variablen om het te laten werken.
Ik heb toen in een readme bestandje gezet dat die querys niet kloppen en dat niet iedereen er uit zal komen met die functies.
Dit is het antwoord van de docent:
Quote:
Mijn queries zijn niet ongeldig; ze werken gewoon. Ze hoeven dus niet te worden aangepast om het werkend te maken.
Het is zelfs als volgt gespecificeerd in SQL (zie http://www.w3schools.com/sql/sql_where.asp):
SQL requires single quotes around text values (most database systems will also allow double quotes).
However, numeric fields should not be enclosed in quotes
En aangezien de waardes van $nummer numeriek zijn (zoals je a.d.h.v. de naam ook zou vermoeden) is het correcter om geen quotes te gebruiken, hoewel je het ook met quotes werkend krijgt.
Maar bij PHP hoor je toch gewoon altijd quotes om de variablen te gebruiken om een query uit te voeren? (Tenzij PDO ofc.)
Waarom kreeg ik die errors dan?
Codeblok (voorbeeld.php):
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
//De functie MaakInactief zorgt ervoor dat een nummer niet nogmaals gebruikt kan worden door hem inactief te maken
//Parameter 1 = De (link) connectie naar de database
//Parameter 2 = Het nummer wat op inactief gezet moet worden
//return = 1 als het gelukt is en 0 als het niet gelukt is
function MaakInactief($link, $nummer) {
$s="update nummers set actief=0 where nummer=$nummer";
$rows=mysqli_query($link, $s);
return mysqli_affected_rows($link);
}
//De functie CheckNummer controleert of een nummer een winnend nummer is
//Parameter 1 = De (link) connectie naar de database
//Parameter 2 = Het nummer wat gecontroleerd moet worden
//return = 1 als het nummer een winnend nummer is en 0 als het geen winnend nummer is
function CheckNummer($link, $nummer) {
if (!$nummer) return 0;
$s="select actief from nummers where nummer=$nummer and actief=1";
$rows=mysqli_query($link, $s);
return mysqli_num_rows($rows);
}
?>
Maar deze code werkte niet bij mij; ik moest quotes toevoegen aan de variablen om het te laten werken.
Ik heb toen in een readme bestandje gezet dat die querys niet kloppen en dat niet iedereen er uit zal komen met die functies.
Dit is het antwoord van de docent:
Quote:
Mijn queries zijn niet ongeldig; ze werken gewoon. Ze hoeven dus niet te worden aangepast om het werkend te maken.
Het is zelfs als volgt gespecificeerd in SQL (zie http://www.w3schools.com/sql/sql_where.asp):
SQL requires single quotes around text values (most database systems will also allow double quotes).
However, numeric fields should not be enclosed in quotes
En aangezien de waardes van $nummer numeriek zijn (zoals je a.d.h.v. de naam ook zou vermoeden) is het correcter om geen quotes te gebruiken, hoewel je het ook met quotes werkend krijgt.
Maar bij PHP hoor je toch gewoon altijd quotes om de variablen te gebruiken om een query uit te voeren? (Tenzij PDO ofc.)
Waarom kreeg ik die errors dan?
Rik schreef:Dat onderste@stef: Bedoele je dat je dit moest doen:
[c]$s="select actief from nummers where nummer=" . $nummer . " and actief=1";[/c]
of bedoelde je dat je dit moest doen:
[c]$s="select actief from nummers where nummer=$nummer and actief=1";[/c]
?

toevoeging op 21 juni 2016, 15:07:24:
In PHPStorm ziet het er ook niet goed uit:
Afbeelding niet beschikbaarDe bron kon niet worden geladen (i.gyazo.com).Bron openen ↗