Mysql-Verbindung

Alles, was PHP betrifft, kann hier besprochen werden.

Mysql-Verbindung

Postby wemepe » 16. February 2006 01:20

Habe xampp installiert. Läuft klaase, bekomme jedoch keine Verbindung zu mysql Datenbank. Habe alles, aber auch alles gescheckt. Bin verzweifelt. Wer kann helfen?

Ich habe immer wieder folgende Fehlermeldung:

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Programme\xampp\htdocs\test\php\pers_in.php on line 19
Kein Datensatz hinzugefügt!

Das script sieht so aus:

<html>
<head>
<title>pers_in.php</title>
</head>
<body bgcolor="#ff6600" text="#000000" link="#006600" vlink="#0000FF" alink="#FF0000">
<?php
//Stellt Verbindung mit dem Server her
include("../inc/funktionen_db.inc");

$sqlbef1= "insert into persdat";
$sqlbef1.="('name','vname','gebdat','strasse','plz','ort','passwd' ";
$sqlbef2= "values('p_name','p_vname','p_gebdat' ";
$sqlbef2.="'p_str','p_plz','p_ort','p_passwd' ";
$sqlbef1.=")";
$sqlbef2.=")";
$sqlbef=$slqbef1.$sqlbef2;
$sqlerg=mysql_query($sqlbef,$db); <--!!!! Hier tritt der Fehler auf!!!!!

if ($sqlerg)
{
echo "<font color='#000000' size='+2'>";
echo "<div align='center'>";
echo "Datensatz hinzugefügt!";
echo "</div>";
}
else
{
echo "<font color='#000000' size='+2'>";
echo "<div align='center'>";
echo "Kein Datensatz hinzugefügt!";
echo "</div>";
}

?>
</body>
</html>

Gruß
WP
email: wemepes.@web.de
INT: www.wemepes.de oder wemepes.info
User avatar
wemepe
 
Posts: 12
Joined: 10. February 2006 21:10

Postby Wiedmann » 16. February 2006 01:58

Code: Select all
$sqlerg=mysql_query($sqlbef,$db);

<--!!!! Hier tritt der Fehler auf!!!!!

Der "Fehler" tritt schon voher auf. und zwar hier:
Code: Select all
//Stellt Verbindung mit dem Server her
include("../inc/funktionen_db.inc");


Diese Verbindung wird ja nicht hergestellt wie die Fehlermeldung sagt:
supplied argument is not a valid MySQL-Link resource


Entweder hast du dort alle Fehlermeldungen unterdrückt, oder prüfst erst gar nicht richtig ob alles ok abgelaufen ist.

Beispiel aus diesem Script hier:
Code: Select all
if ($sqlerg) {
    // code
} else {
    echo "Kein Datensatz hinzugefügt!";
}

So einen Test sollte man nach den meisten MySQL-Funktionen machen, nucht nur nach mysql_query(). Im Manual steht ja was die Funktionen jeweils zurückgeben.

Ferner sollte man hier anstatt einfach einen Text als Fehlermeldung, die Rückgabe von mysql_error() ausgeben.
--> Sonst weis man ja gar nciht was MySQL einem mitteilen will: Sprich, wo der Fehler genau liegt.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

bekannt

Postby wemepe » 16. February 2006 10:55

danke für die antwort. aber ich habe, wie man auf dem script sieht an diese möglichkeit der überwachung gedacht, sonst hätte ich nicht die meldung: "kein datensatz hinzugefügt" erhalten.
so sieht meine funktion aus:
<?php

function db_connect($host="localhost",$benutzer="root",$kenn="")
{
/* Macht eine Verbinung zum Host, dann zur Datenbank und
gibt die Verbindungskennung wieder zur&uuml;ck.*/

$db=mysql_connect("localhost","root","geheim") or exit ("keine Verbindung hergestellt!");
mysql_select_db("test",$db) or exit ("Datenbank nicht ge&ouml;ffnet");
return $db;
}

?>

trotzdem kein eintrag!?
gruß wp
User avatar
wemepe
 
Posts: 12
Joined: 10. February 2006 21:10

Postby Wiedmann » 16. February 2006 11:21

aber ich habe, wie man auf dem script sieht an diese möglichkeit der überwachung gedacht, sonst hätte ich nicht die meldung: "kein datensatz hinzugefügt" erhalten.

Ob das in der "funktionen_db.inc" auch zutrifft (Fehlerbehandlung vorhanden), konnte ich ja gestern noch nicht sagen. Bleibt immer noch die Empfehlung in der Fehlerbehandlung jeweils mysql_error() zu benutzen.

Warning: mysql_query(): supplied argument is not a valid MySQL-Link resource in C:\Programme\xampp\htdocs\test\php\pers_in.php on line 19

Hast du in der "pers_in.php" etwas weggelassen? Bei mir ist das mysql_query() in Zeile 17.

so sieht meine funktion aus:

Aha. Im Hauptscript "pers_in.php" bindest du also die Datei "funktionen_db.inc" ein, in welcher sich die Funktion db_connect() für den Verbindungsaufbau befindet.

Rufst du diese Funktion auch irgendwo auf? Das sehe ich nirgends:
also ist die Variable $db gar nicht bekannt bei mysql_query().
--> du solltest dein error_reporting auf E_ALL stellen.
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

bekannt

Postby wemepe » 16. February 2006 13:06

Was meinst Du mit E-All?
Da habe ich keine Ahnung.
Wie mache ich $db bekannt?
Im Script wird doch das Ergebnis von $db angefordert!?
siehe $sqlerg=mysql_query($sqlbef,$db);

gruß
wp
User avatar
wemepe
 
Posts: 12
Joined: 10. February 2006 21:10

Postby Wiedmann » 16. February 2006 13:23

Was meinst Du mit E-All?

http://de.php.net/manual/en/function.er ... orting.php
http://de.php.net/manual/en/ref.errorfu ... -reporting

Im Script wird doch das Ergebnis von $db angefordert!?
siehe $sqlerg=mysql_query($sqlbef,$db);

Nein. Du benutzt hier die Variable $db. Diese Wird aber im Script nirgends definiert. $db wird nur innerhalb der Funktion db_connect() benutzt und ist auch nir dort bekannt. Allerdings wird diese Funkti auch schon nirgends aufgerufen. Wenn das funktionieren soll, dann könnte man das z.B. so machen:
Code: Select all
$db = db_connect();
$sqlerg=mysql_query($sqlbef, $db);


(BTW: Warum du bei der Funktionsdefinition Variablen vordefinierst, aber in der Funktion selbst dann feste Werte und nicht diese Variablen nimmst, ist mir auch ein Rätsel.)
Wiedmann
AF Moderator
 
Posts: 17106
Joined: 01. February 2004 12:38
Location: Stuttgart / Germany

bekannt

Postby wemepe » 16. February 2006 14:34

vielen Dank, Ich glaube jetzt zu wissen was Sache ist. Ich werde darüber nachdenken und mich weider melden, wenn alles funktioniert.

gruß

wp
User avatar
wemepe
 
Posts: 12
Joined: 10. February 2006 21:10


Return to PHP

Who is online

Users browsing this forum: No registered users and 6 guests