foutmelding mysql_fetch_assoc()
Echter krijg ik voor dezelfde zoekopdracht de ene keer wel resultaat en de andere keer de melding: Warning: mysql_fetch_assoc(): supplied argument is not a valid MySQL result resource
De ene keer doet hij het dus wel de andere keer niet, terwijl alle gegevens hetzelfde blijven, ook de zoekopdracht. Verder krijg ik ook geen foutmeldingen over de query.
Is er iemand die bekend is met het probleem en weet waar dit door kan komen?
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
2
3
4
5
6
7
8
9
10
11
12
13
<?
$query = "SELECT * FROM table";
$result = mysql_query($query);
if($result){ // query gelukt
while($row = mysql_fetch_assoc($result){
// doe iets
}
}
else { // query mislukt
echo mysql_error();
}
?>
$query = "SELECT * FROM table";
$result = mysql_query($query);
if($result){ // query gelukt
while($row = mysql_fetch_assoc($result){
// doe iets
}
}
else { // query mislukt
echo mysql_error();
}
?>
En nooit meer vergeten!
http://nl3.php.net/mysql_fetch_assoc
Verder zou een stukje code altijd handig zijn, want dit is zoeken naar een goede programmeur tussen alle phphulpers (nieuwe spreekwoord op de wijs van zoeken naar een naald in een hooiberg).
:P
Verder zou een stukje code altijd handig zijn, want dit is zoeken naar een goede programmeur tussen alle phphulpers (nieuwe spreekwoord op de wijs van zoeken naar een naald in een hooiberg).
:P
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
<?
if(isset($_POST['zoek'])){
$zoekOpdracht = 'ja';
$zoek = $_POST['input'];
$categorie = $_POST['cat'];
if ($categorie == 'an'){
$zoekOp = 'achternaam';
} else if ($categorie == 'pl'){
$zoekOp = 'plaats';
} else if ($categorie == 'kID'){
$zoekOp = 'klantID';
}
$sql_zoek_klant = "SELECT * FROM `klant` WHERE `$zoekOp` LIKE '%$zoek%'";
$result_zoek = mysql_query($sql_zoek_klant) or die ('Kon zoekopdracht niet uitvoeren '.mysql_error());
while($rij_klant = mysql_fetch_assoc($result_zoek)){
}
?>
if(isset($_POST['zoek'])){
$zoekOpdracht = 'ja';
$zoek = $_POST['input'];
$categorie = $_POST['cat'];
if ($categorie == 'an'){
$zoekOp = 'achternaam';
} else if ($categorie == 'pl'){
$zoekOp = 'plaats';
} else if ($categorie == 'kID'){
$zoekOp = 'klantID';
}
$sql_zoek_klant = "SELECT * FROM `klant` WHERE `$zoekOp` LIKE '%$zoek%'";
$result_zoek = mysql_query($sql_zoek_klant) or die ('Kon zoekopdracht niet uitvoeren '.mysql_error());
while($rij_klant = mysql_fetch_assoc($result_zoek)){
}
?>
Die gore backtics ` gooi je natuurlijk weg, afval hoort in de prullenbak.
te veranderen in dit:
dan ga ik ervanuit dat $zoek een string is.
En trouwens: Je bent nu een makkelijk slachtoffer voor sql-injection...
filter alles even met bijv.
Gewijzigd op 01/01/1970 01:00:00 door Rob
Frank schreef op 05.04.2007 15:11:
Die gore backtics ` gooi je natuurlijk weg, afval hoort in de prullenbak.
haha, zo heb ik het mezelf aangeleerd, voor nu mag je ze ff wegdenken dan, neem niet aan dat het daaraan ligt,..maar goed.
Als het goed gaat echoot hij de query zoals:
SELECT * FROM `klant` WHERE `achternaam` LIKE '%v%'
Als het fout gaat echoot hij helemaal niets.
edit: je scoort er punten mee als je inzet toont en laat zien dat je je code ook beter wil maken , al was dit niet je vraag
ohja en als je het niet doet komen er vanacht hordes konijnen je kant op die al 6 dagen geen wortels hebben gehad
fear
Gewijzigd op 01/01/1970 01:00:00 door - wes -
Zojuist gedaan, maar probleem blijft bestaan.
Jeroen schreef op 05.04.2007 15:27:
Heel goed dat het probleem van de backtics is opgelost, kunnen we eindelijk verder met de rest.Zojuist gedaan, maar probleem blijft bestaan.
Wat mij opvalt, is dat je in de while-lus niets doet met de resultaten.
Echo daar de resultaten, mochten er resultaten zijn. Vaak is het handig (of eigenlijk is het altijd handig) om eerst te checken of er wel resulten zijn. mysql_num_rows() is je beste vriend (zie handleiding).
Vooruit voor jouw de waslijst in de while-lus.
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
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
<?
while($rij_klant = mysql_fetch_assoc($result_zoek)){
/*css style bepalen van de rij*/
if($i==0){
$style = 'ora';
}else{
$style = 'orb';
}
echo '<tr class="'.$style.'">';
echo '<td><a href="bekijk_klant.php?kID='.$rij_klant['klantID'].'"><u>'.$rij_klant['klantID'].'</u></a></td>';
echo '<td><a href="bekijk_klant.php?kID='.$rij_klant['klantID'].'"><u>'.$rij_klant['achternaam'].'</u></a></td>';
$voorletter = substr($rij_klant['voornaam'],0,1);
echo '<td>'.$voorletter.'.</td>';
echo '<td>'.$rij_klant['plaats'].'</td>';
$landID = $rij_klant['land'];
/*land naam opvragen*/
$sql_get_land = "SELECT `name` FROM `landen` WHERE `id`='$landID'";
$result_land = mysql_query($sql_get_land) or die ('Kon de naam van het land niet opvragen: '.mysql_error());
while($rijLand = mysql_fetch_assoc($result_land)){
$land = $rijLand['name'];
}
echo '<td>'.$land.'</td>';
/*aantal orders van klant opvragen*/
$klantID = $rij_klant['klantID'];
$sql_get_aantal = "SELECT COUNT(`ordernummer`) FROM `order` WHERE `klantID`='$klantID'";
$result_AL = mysql_query($sql_get_aantal) or die ('Kon aantal orders niet opvragen'.mysql_error());
$totaal = mysql_num_rows($result_AL);
echo '<td>'.$totaal.'</td>';
echo '</tr>';
/*$i aanpassen voor style*/
if($i == 0){
$i = 1;
}else{
$i = 0;
}
}
?>
while($rij_klant = mysql_fetch_assoc($result_zoek)){
/*css style bepalen van de rij*/
if($i==0){
$style = 'ora';
}else{
$style = 'orb';
}
echo '<tr class="'.$style.'">';
echo '<td><a href="bekijk_klant.php?kID='.$rij_klant['klantID'].'"><u>'.$rij_klant['klantID'].'</u></a></td>';
echo '<td><a href="bekijk_klant.php?kID='.$rij_klant['klantID'].'"><u>'.$rij_klant['achternaam'].'</u></a></td>';
$voorletter = substr($rij_klant['voornaam'],0,1);
echo '<td>'.$voorletter.'.</td>';
echo '<td>'.$rij_klant['plaats'].'</td>';
$landID = $rij_klant['land'];
/*land naam opvragen*/
$sql_get_land = "SELECT `name` FROM `landen` WHERE `id`='$landID'";
$result_land = mysql_query($sql_get_land) or die ('Kon de naam van het land niet opvragen: '.mysql_error());
while($rijLand = mysql_fetch_assoc($result_land)){
$land = $rijLand['name'];
}
echo '<td>'.$land.'</td>';
/*aantal orders van klant opvragen*/
$klantID = $rij_klant['klantID'];
$sql_get_aantal = "SELECT COUNT(`ordernummer`) FROM `order` WHERE `klantID`='$klantID'";
$result_AL = mysql_query($sql_get_aantal) or die ('Kon aantal orders niet opvragen'.mysql_error());
$totaal = mysql_num_rows($result_AL);
echo '<td>'.$totaal.'</td>';
echo '</tr>';
/*$i aanpassen voor style*/
if($i == 0){
$i = 1;
}else{
$i = 0;
}
}
?>
Mijn excuses voor de backticks :)
Code (php)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
2
3
4
5
6
7
8
9
10
11
12
13
14
15
<?
$sql = 'SELECT
persoon
FROM
namen
WHERE
persoon = "peter"';
$res = mysql_query($sql,$link);
if ($res && mysql_num_rows($res) >= 1)
{
echo 'Resultaat!';
} else {
echo 'Geen data gevonden';
}
?>
$sql = 'SELECT
persoon
FROM
namen
WHERE
persoon = "peter"';
$res = mysql_query($sql,$link);
if ($res && mysql_num_rows($res) >= 1)
{
echo 'Resultaat!';
} else {
echo 'Geen data gevonden';
}
?>
Aanvulling op het stukje van Wes: bij de 'geen data gevonden' zou er ook nog sprake kunnen zijn van een error.
Het probleem: Na het invullen van de zoekopdracht in het formulier op ENTER drukken ipv op de submitknop.
Ik haat computers...
p.s. niemand toevallig een javascriptje liggen waarbij bij enter de focus automatisch op submit ligt?
unless someone beats me to it
@frank, dat was de vraag niet :) beter lezen
Nu moet ik dat dus zien te voorkomen, zodat je net als bij google, enter kan geven om te zoeken.
Ik probeer zelf wel ff wat op te snorkelen, als dat niet lukt hoor je het.
In ieder geval bedankt.