PHP mysql script

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

David Waijers

David Waijers

25/12/2012 21:44:04
Quote Anchor link
Hallo, ik ben bezig met een super simpel mysql query script. Als ik "show tables" uitvoer, doet het gewoon wat ik wil, maar wanneer ik een query uitvoer die geen mysql_result terugkrijgt krijg ik een error:
"Warning: mysql_num_rows() expects parameter 1 to be resource, boolean given in "url" "

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
<?
 
$username
="geenusername";
$password="geenwachtwoord";
$database="geendb";
 
mysql_connect(localhost,$username,$password);
@
mysql_select_db($database) or die( "Unable to select database");
 
$insertquery=$_POST['query'];
mysql_query($insertquery);
 
 
$result= mysql_query($insertquery);
$num= mysql_num_rows($result);
 
$i=0;
while ($i < $num) {
 
echo mysql_result($result, $i);
echo "<br>";
$i++;
}

 
 
 
?>



Alvast bedankt
Gewijzigd op 26/12/2012 11:23:13 door David Waijers
 
PHP hulp

PHP hulp

24/11/2024 04:27:22
 
Erwin H

Erwin H

25/12/2012 21:58:59
Quote Anchor link
Dat klopt. Als je een insert, update of delete (en zo zijn er nog een paar) uitvoert krijg je geen resultset en kan je dus ook niet het aantal opgehaalde rijen opvragen. Wat je wel kunt doen is het aantal 'affected rows' opvragen met mysql_affected_rows.

Tevens moet je dus ALTIJD na het uitvoeren van een query controleren dat je een resultset terugkrijgt, of dat je een false terugkrijgt indien je query is mislukt. Het is een fout om ervanuit te gaan dat het altijd maar goed gaat. En dit geldt overigens voor nagenoeg alle mysql_xxxx functies die een resource zouden moeten teruggeven.
Gewijzigd op 25/12/2012 21:59:18 door Erwin H
 
David Waijers

David Waijers

25/12/2012 22:17:10
Quote Anchor link
Erwin H op 25/12/2012 21:58:59:
Dat klopt. Als je een insert, update of delete (en zo zijn er nog een paar) uitvoert krijg je geen resultset en kan je dus ook niet het aantal opgehaalde rijen opvragen. Wat je wel kunt doen is het aantal 'affected rows' opvragen met mysql_affected_rows.

Tevens moet je dus ALTIJD na het uitvoeren van een query controleren dat je een resultset terugkrijgt, of dat je een false terugkrijgt indien je query is mislukt. Het is een fout om ervanuit te gaan dat het altijd maar goed gaat. En dit geldt overigens voor nagenoeg alle mysql_xxxx functies die een resource zouden moeten teruggeven.


Hoe zou ik heb kunnen implementeren in het script?

mvg David Waijers
 
Erwin H

Erwin H

25/12/2012 22:38:39
Quote Anchor link
In zijn algemeenheid:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
<?php
$result
= mysql_query($insertquery);
if ( $result === false ){
  //doe iets met het feit dat er een fout is
} else {
  $num = mysql_num_rows($result);
}
  
?>

Dit is de situatie voor normale queries, waarbij je een resultset verwacht. Verwacht je dat niet, of weet je het niet van te voren dan kan je dit doen:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
$result
= mysql_query($insertquery);
if ( $result === false ){
  //doe iets met het feit dat er een fout is
} elseif( $result === true ) {
  $num = mysql_affected_rows();
}
else {
  $num = mysql_num_rows($result);
}

?>

Eenzelfde constructie kan je bij de andere mysql functies gebruiken waar je of een boolean, of een resource terugkrijgt. Klik op de functie in je eerste post om direct naar de php manual te gaan waar je er meer over kunt lezen.

Let overigens op dat in jouw code je de query twee keer uitvoert, op regel 11 en nog een keer op regel 14.
 
- Ariën  -
Beheerder

- Ariën -

26/12/2012 10:09:30
Quote Anchor link
Zou je a.u.b. even je titel aan willen passen? Iedereen heeft hier hulp nodig, en dus is zo'n titel die dit topic nu draagt niet correct.

Dus kan je deze even aanpassen naar je vraagstelling? Alvast bedankt.
 



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.