Datenbankverbindung über include übergeben
MrSchmidtdtdtdtdtt
- php
0 jobo0 Der Martin0 MrSchmidtdtdtdt
Hallo,
ich bekomme follgenden Fehler, wenn ich die Datenbankverbindung über require_once("db_connection.php") übergebe:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in E:...\htdocs\include\create_account.php on line 27
Warning: mysql_query() [function.mysql-query]: A link to the server could not be established in E:...\htdocs\include\create_account.php on line 27
Wenn die Datenbankverbindung allerdings von der Ausführenden php Datei aus (also der, die den Eintrag vornimmt bzw. den oberen Fehler produziert) erfolgt, funktioniert alles einwandfrei.
Mir ist klar, das hier die übergebene Verbindung nicht verwendet wird und stattdessen versucht wird mit dem standart Benutzer zu connecten.. was dann die entsprechende Fehlermeldung verursacht.
Aber weshalb?
Danke im Voraus.
Hallo,
mit requiere_once() übergibst du nichts. Du liest nur die PHP Datei ein. Es ist m.W. nach identisch mit einer Datei, in der statt require_once() eben der Text/Code steht, den du includest.
echo "a";
echo "b";
===
echo "a";
include("b");
wenn in b steht
echo "b";
Gruß
jobo
Hi,
ich bekomme follgenden Fehler, wenn ich die Datenbankverbindung über require_once("db_connection.php") übergebe:
Warning: mysql_query() [function.mysql-query]: Access denied for user 'ODBC'@'localhost' (using password: NO) in E:...\htdocs\include\create_account.php on line 27
verschweigst du uns möglicherweise, dass du hier versuchst, über HTTP zu includen, anstatt über direkten Dateizugriff? Denn dann würde ja das includierte Script als neue, komplett unabhängige Scriptinstanz gestartet, was das beschriebene Verhalten zur Folge hätte.
So long,
Martin
Hi,
verschweigst du uns möglicherweise, dass du hier versuchst, über HTTP zu includen, anstatt über direkten Dateizugriff? Denn dann würde ja das includierte Script als neue, komplett unabhängige Scriptinstanz gestartet, was das beschriebene Verhalten zur Folge hätte.
So long,
Martin
Hallo,
zumindest nicht absichtlich. Kannst du mir das näher erleutern?
Ich include folgenderweise:
db_connection.php:
1 <php
2 // database settings
3 $server = "xxx";
4 $user = "xxx";
5 $password = "xxx";
6 $database = "xxx";
7
8 mysql_connect($server, $user, $password) or die ("xxx");
9 mysql_select_db($database) or die ("xxx");
10 ?>
create_account.php:
1 <?php
2
3 // open database connection
4 include("db_connection.php");
5
6 // get variables from input form
7 $xxx = $_POST['xxx'];
8 $xxx = $_POST['xxx'];
9 $xxx = $_POST['xxx'];
10 $xxx = $_POST['xxx'];
11 $xxx = $_POST['xxx'];
12 $xxx = $_POST['xxx'];
13
14 // write into database
15 mysql_query("INSERT INTO accounts (xxx,
16 xxx,
17 xxx,
18 xxx,
19 xxx,
20 xxx)
21
22 VALUES ('$xxx',
23 '$xxx',
24 '$xxx',
25 '$xxx',
26 '$xxx',
27 '$xxx')");
28 // close database connection
29 // mysql_close();
30 ?>
Hallo,
Ich include folgenderweise:
eine Datei, die keinen PHP-Code enthält
db_connection.php:
1 <php
2 // database settings
3 $server = "xxx";
4 $user = "xxx";
5 $password = "xxx";
6 $database = "xxx";
7
8 mysql_connect($server, $user, $password) or die ("xxx");
9 mysql_select_db($database) or die ("xxx");
10 ?>
Bitte beachte <http://www.php.net/manual/de/language.basic-syntax.phpmode.php>
> create\_account.php:
> [code lang=php]1 <?php
> 2
> 3 // open database connection
> 4 include("db\_connection.php");
> 5
> 6 // get variables from input form
# Oft gesehen und dennoch überflüssig.
> 14 // write into database
> 15 mysql\_query("INSERT INTO accounts (xxx,
> 16 xxx,
> 17 xxx,
> 18 xxx,
> 19 xxx,
> 20 xxx)
> 21
> 22 VALUES ('$xxx',
> 23 '$xxx',
> 24 '$xxx',
> 25 '$xxx',
> 26 '$xxx',
> 27 '$xxx')");
da keine DB-Verbindung bestehen kann, versucht sich PHP mit den Standardwerten zu verbinden, was fehlschlägt.
Gefährlicher Fehler: Es fehlt die Beachtung des [Kontextwechsels](http://wiki.selfhtml.org/wiki/Artikel:Kontextwechsel).
Freundliche Grüße
Vinzenz
Hallo,
Wer sagt Dir denn, dass diese Verbindung nicht genutzt wird?
Der User 'ODBC' hat vermutlich nur keine passenden Zugriffsrechte auf die ausgewählte Tabelle.
Nun, ich habe angenommen, das meine Verbindungsübergabe fehlschlägt und DESHALB versucht wird, mit dem ODBC Standard-Benutzer zu verbinden, was dann natürlich nicht funktioniert.
Was genau passiert hier?
Außerdem würde ich die Verbindung mittels einer Funktion herstellen, die den Linkidentifier (oder false) als Ergebnis hat, und nicht einfach so die beiden Zeilen
8 mysql_connect($server, $user, $password) or die ("xxx");
9 mysql_select_db($database) or die ("xxx");ins Script klatschen.
Das werde ich sogleich umsetzen.. ist vermutlich sauberer. Danke!
Liebe Grüße,
Mr.Schmidtdt