Query foutmelding: mysql_db_query(): supplied argument is not a valid MySQL-Link
Pieter schreef op 16.09.2009 12:39:
het ziet er nu zo uit en heb het net getest:
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.
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?
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)
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
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()
?>
// 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)
1
2
3
4
5
6
7
8
9
10
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
?>
// 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)
1
2
3
2
3
<?php
$query = mysql_query(INSERT INTO blablabablalbalb) or die (mysql_error()); // mysql_error kan je ook vervangen door een zelf geformuleerde fout..
?>
$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)
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
<?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;
}
}
}
?>
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)
1
2
3
4
5
2
3
4
5
<?php
$db = safe_db_open($host, $gebruiker, $wachtwoord, $database);
$query = "INSERT INTO enz..";
$result = safe_query($db, $query);
?>
$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)
suc6;)
Gewijzigd op 01/01/1970 01:00:00 door Niels K
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);
In de config.php kan handig zijn omdat je die overal include.
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)
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
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
?>
// 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)
1
2
3
4
5
6
7
8
9
10
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);
?>
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
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)
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
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);
?>
# 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);
?>
Jeps heel goed;-) Nu die functions nog erbij doen voor een extra beveiligde verbinding en query:)
@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?
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
<?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;
}
}
}
?>
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;
}
}
}
?>
Code (php)
1
2
3
4
5
6
7
2
3
4
5
6
7
<?php
$db = safe_db_open($host, $gebruiker, $wachtwoord, $database);
if(!$db)
{
// error
}
?>
$db = safe_db_open($host, $gebruiker, $wachtwoord, $database);
if(!$db)
{
// error
}
?>
Ik gebruik dan altijd dit
Stel je doet ergens (per ongeluk) dit, dan gaat het behoorlik fout.
Code (php)
Probeer maar eens uit.
Jeps je hebt gelijk;) Ik zal het aanpassen in mijn script;)