Query foutmelding: mysql_db_query(): supplied argument is not a valid MySQL-Link

Overzicht Reageren

Sponsored by: Vacatures door Monsterboard

Pagina: « vorige 1 2

Niels K

Niels K

16/09/2009 14:17:00
Quote Anchor link
Pieter schreef op 16.09.2009 12:39:
het ziet er nu zo uit en heb het net getest:
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(!mysql_query($query,$db)) die(mysql_error());
?>

hij geeft nu weer de error van het begin: Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in /home/a9533661/public_html/loggedin/add_bedrijf.php on line 148

Ik zou OR er nog even bij kunnen zetten maar dit moet volgens mij niet zo heel veel uit maken.


Probeer dit er eens van te maken?

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
if(!mysql_query($query)) or die(mysql_error());
?>


en je connectie kan je op een aantal manieren doen.
Hier dan 2 uitgelegd:

1:

Zoals ik zie wil jij het in een config bestand laden.
Als ik jouw was zou ik het zo doen. (Kheb gelijk fouten afhandeling erbij gedaan heel uitgebreid maar dan kan je het juist goed testen).

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
<?php
// gegevens

  $host               = 'xxx';
  $gebruiker       = 'xxx';
  $wachtwoord       = 'xxx';
  $database       = 'xxx';

// database openen function maken
 function safe_db_open($host, $gebruiker, $wachtwoord, $database){
  $db = '';
  if(empty($host) || empty($gebruiker) || empty($wachtwoord) || empty($database)){
    // er zijn geen geldige parameters meegegeven.
    return false;
    }

    else {
      if(DEBUG_MODE){
       // uitgebreide debugging mode voor meldingen voor de programmeur
       if(!$db = mysql_connect($host, $gebruiker, $wachtwoord, $database)){
         die("OOPS: er is een fout opgetreden: <br />
         Host: $host<br />
         Gebruiker: $gebruiker<br />
         Wachtwoord: $wachtwoord<br />
         Database: $database<br />
           MySQL-Foutnummer: "
. mysql_error($db) . "<br /> MySQL-melding: " . mysql_error($db));
           }

           else {
           // alles OK, resource-handler teruggeven
             return $db;
          }
       }

          else {
       // geen debug-mode, eindegebruiker krijgt beperkte foutmelding te zien
         if(!$db = mysql_connect($host, $gebruiker, $wachtwoord, $database)){
           die("Er is een fout opgetreden met de database");
         }

         else {
         // alles OK,
            return $db;
             }
      }
  }
}
     // einde functie safe_db_open()
?>


Wat je nu in de pagina zet waar database moet worden aangeroepen is dit:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
// database openen
$db = safe_db_open($host, $gebruiker, $wachtwoord, $database); // hier wordt dus de functie aangeroepen die je in het config bestand hebt gemaakt

// nu kan je de query maken


$query = "INSERT INTO blablablablabla";    
 if(!mysql_query($d, $query)) or die(mysql_error());
 // en dan de rest van het script
?>


Wat je ook kan doen is gelijk al een mysql_query maken als je het in de datbase schrijft.. Dan wordt de code zo

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
<?php
$query
= mysql_query(INSERT INTO blablabablalbalb) or die (mysql_error());  // mysql_error kan je ook vervangen door een zelf geformuleerde fout..
?>


Wat ik altijd gebruik is een function maken die een veilige query aanmaakt.
Je gaat dan dus weer naar je config bestand en zet deze function erbij

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
<?php
function safe_query($db, $query){
  $result = '';
    if(empty($query) || empty($db)){
      // er zijn hier dus geen geldige parameters meegegeven
      return false;
    }
else {
      if(!$result = mysql_query($db, $query)){
        die ("OOPS: er is een fout opgetreden bij het werken met de datbase.. enz.. ");
    }
else {
       return $result;
    }
  }  
}

?>


Let wel goed op met het maken van query's

Ik maak meestal zo mijn query's en results dan zou het moeten werken

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
$db
= safe_db_open($host, $gebruiker, $wachtwoord, $database);
$query = "INSERT INTO enz..";
$result = safe_query($db, $query);
?>


Je kan natuurlijk ook nog een extra controle er in goeie maar goed daar moet je zelf maar ff mee expirimenteren

klein voorbeeldje:

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(!$db = safe_db_open($host, $gebruiker, $wachtwoord, $database)){
  echo "Het openen van de database is niet gelukt";
  echo "De foutmelding luid:" . mysql_connect_error();
?>



suc6;)
Gewijzigd op 01/01/1970 01:00:00 door Niels K
 
PHP hulp

PHP hulp

03/01/2025 11:50:58
 
Pieter

Pieter

16/09/2009 14:29:00
Quote Anchor link
Ik werk nog niet heel lang met php om dit nu zo even simpel aan te kunnen passen maar ik ga me best doen.
Kan ik zoiets neerzetten in de config.php of juist in de andere waar het hele script staat?

$db=mysql_connect("xxx","xxx","xxx") or die
("Kan niet verbinden");
mysql_select_db("xxx",$db);
 
- SanThe -

- SanThe -

16/09/2009 14:31:00
Quote Anchor link
In de config.php kan handig zijn omdat je die overal include.
 
Niels K

Niels K

16/09/2009 14:36:00
Quote Anchor link
ik werk ook nog helemaal nog niet zolang met php hoor:P Maar goed:P

Umm die functions zet je in je config file en die require/include je in de normale bestand..

Dus even netjes alles geordend:

config file:

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
<?php
// gegevens

  $host               = 'xxx';
  $gebruiker       = 'xxx';
  $wachtwoord       = 'xxx';
  $database       = 'xxx';

// database openen function maken
 function safe_db_open($host, $gebruiker, $wachtwoord, $database){
  $db = '';
  if(empty($host) || empty($gebruiker) || empty($wachtwoord) || empty($database)){
    // er zijn geen geldige parameters meegegeven.
    return false;
    }

    else {
      if(DEBUG_MODE){
       // uitgebreide debugging mode voor meldingen voor de programmeur
       if(!$db = mysql_connect($host, $gebruiker, $wachtwoord, $database)){
         die("OOPS: er is een fout opgetreden: <br />
         Host: $host<br />
         Gebruiker: $gebruiker<br />
         Wachtwoord: $wachtwoord<br />
         Database: $database<br />
           MySQL-Foutnummer: "
. mysql_error($db) . "<br /> MySQL-melding: " . mysql_error($db));
           }

           else {
           // alles OK, resource-handler teruggeven
             return $db;
          }
       }

          else {
       // geen debug-mode, eindegebruiker krijgt beperkte foutmelding te zien
         if(!$db = mysql_connect($host, $gebruiker, $wachtwoord, $database)){
           die("Er is een fout opgetreden met de database");
         }

         else {
         // alles OK,
            return $db;
             }
      }
  }
}
     // einde functie safe_db_open()

function safe_query($db, $query){
  $result = '';
    if(empty($query) || empty($db)){
      // er zijn hier dus geen geldige parameters meegegeven
      return false;
    }
else {
      if(!$result = mysql_query($db, $query)){
        die ("OOPS: er is een fout opgetreden bij het werken met de datbase.. enz.. ");
    }
else {
       return $result;
    }
  }  
}
// einde function safe query
?>


En dan zou je in het 'normale' bestand ongeveer dit neer moeten zetten

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
8
9
10
<?php
include_once('config.php'); // je kan ook include of require gebruiken. This wat je zelf het lekkerste vind

// hier komt dus de query


$db = safe_db_open($host, $gebruiker, $wachtwoord, $database);
$query = "INSERT INTO enz..";
$result = safe_query($db, $query);

?>


Test het eens;') als goed is zou die nu moeten werken als je het zo ongeveer doet. Trouwens ik heb het niet getest omdat ik nu even geen webserver bij de hand heb.. Dus er kunnen foutjes in zitten. Maar goed dat zien we zo wel dan xD

Suc6
Gewijzigd op 01/01/1970 01:00:00 door Niels K
 
Pieter

Pieter

16/09/2009 14:38:00
Quote Anchor link
Mensen,

Heel erg bedankt voor jullie moeite en hulp.
Santhe had gelijk, hij maakte geen verbinding met de database. hieronder de oplossing wat ik erbij gevoegd heb in de CONFIG.PHP

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
<?php

# configuratie bestand van mijn persoonlijke database
# waarin adres bestanden e.d. geplaatst kan worden.

// $user = je gebruikersnaam voor mysql
// $password = het wachtwoord
// $host = het adres van je mysql server, normaliter is dit localhost
// $dbname = de naam van je mysql database


$user= "xxx";
$password="xxx";
$host="xxx";
$dbname="xxx";

$db = mysql_connect ($host, $user, $password) or die ("Kan geen verbinding maken met de database ");
mysql_select_db ($dbname,$db);

?>
 
Niels K

Niels K

16/09/2009 14:40:00
Quote Anchor link
Jeps heel goed;-) Nu die functions nog erbij doen voor een extra beveiligde verbinding en query:)
 
- SanThe -

- SanThe -

16/09/2009 14:44:00
Quote Anchor link
@Niels: Nou geef je als return een false bij het mislukken. Maar je controleert daar helemaal niet op, dan heeft dat toch geen zin. Controleren dus. Verder is je methode met DEBUG_MODE leuk, maar waarom dan niet ook bij de query zelf?
 
Niels K

Niels K

16/09/2009 14:51:00
Quote Anchor link
ow:S hoe zou jij het dan doen? Bij de query heb ik ook gedaan hoor;)

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
<?php
function safe_query($db, $query){
  $result = '';
    if(empty($query) || empty($db)){
      // er zijn hier dus geen geldige parameters meegegeven
      return false;
    }
else {
      if(!$result = mysql_query($db, $query)){
        die ("OOPS: er is een fout opgetreden bij het werken met de datbase.. enz.. ");
    }
else {
       return $result;
    }
  }  
}

?>
 
- SanThe -

- SanThe -

16/09/2009 14:55:00
Quote Anchor link
Ik mis bij de query ook de if(DEBUG_MODE){
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$db
= safe_db_open($host, $gebruiker, $wachtwoord, $database);
if(!$db)
{

    // error
}
?>
 
Niels K

Niels K

16/09/2009 15:04:00
Quote Anchor link
Jah klopt:P

Ik gebruik dan altijd dit

Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
<?php
if(!$db = safe_db_open($host, $gebruiker, $wachtwoord, $database)){
  echo "Het openen van de database is niet gelukt";
  echo "De foutmelding luid:" . mysql_connect_error();
?>
 
- SanThe -

- SanThe -

16/09/2009 15:13:00
Quote Anchor link
Toch niet helemaal voldoende.
Stel je doet ergens (per ongeluk) dit, dan gaat het behoorlik fout.
Code (php)
PHP script in nieuw venster Selecteer het PHP script
1
2
3
4
5
6
7
<?php
$gebruiker
= ""; // moest bijv. $klant zijn oid.

if(!$db = safe_db_open($host, $gebruiker, $wachtwoord, $database)){
  echo "Het openen van de database is niet gelukt";
  echo "De foutmelding luid:" . mysql_connect_error();
?>

Probeer maar eens uit.
 
Niels K

Niels K

16/09/2009 15:21:00
Quote Anchor link
Jeps je hebt gelijk;) Ik zal het aanpassen in mijn script;)
 

Pagina: « vorige 1 2



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.