Funktion mysql_select_db() gibt Fehler zurück

Panzer

Mitglied
Hallo zusammen,

ich habe ein Problem mit der Funktion mysql_select_db(). Wenn ich sie, wie folgt, einsetze funktioniert sie einwandfrei:

PHP:
if($verbindung = mysql_connect($sqladresse, $sqluser, $sqlpass)){
             $db_selected = mysql_select_db($sqldatabase, $verbindung);
             $request = "SELECT name
                        FROM site_id
			            WHERE id = '$id'";
             $result = mysql_query($request, $verbindung);
             if(mysql_num_rows ($result) > 0){
                 $data = mysql_fetch_array ($result);
                 $name = $data["name"];
                 $name = "inhalt/".$name;
                 Include ($name);
             }
             else{
             	Include("inhalt/error.php");
             }
         }
         else{
         	Include("inhalt/error.php");
         }

wenn ich jedoch das ganze etwas anders schreibe bekomme ich den Error:

Fatal error: Call to undefined function  mysql_select_db() in /bla/db.php on line 18

PHP:
		$verbindung = mysql_connect($sql_server,$user,$pass);
		echo "".$verbindung."<br>";
		if(!$verbindung){
			echo "1.1";
			die('Kann die Verbindung nicht aufbauen! Fehler:'.mysql_error());
		}
		else{
			echo "".$sql_db."<br>";
			$db_selected=mysql_select_db($sql_db, $verbindung);
			echo "".$db_selected."<br>";
			if(!$db_selected){
				die('Kanndie Datenbank '.$sql_db.'nichtbenutzen! Fehler:'.mysql_error());
			}
			else{
				$ergebnis=mysql_query($abfrage);
				if(!$ergebnis){
					die('Die Abfrage: '.$abfrage.' ist ungültig! Fehler:'.mysql_error());
				}
				else{
					if(mysql_num_rows ($ergebnis) > 0){
					$datensatz = mysql_fetch_array($ergbnis);
					//return $datensatz;
					}
					else{
						die('Die Abfrage brachte kein Ergebnis!');
					}
				}
			}
		}

wieso kann er beim 1. Beispiel die SELECT-Anfrage machen und beim 2. Beispiel die Datenbank nicht korrekt anwählen?:confused:
Hab schon google und das Forum nach einem brauchbaren Hinweis durchforstet.
Ich hoffe ihr könnt mir einen Tip geben was ich hier falsch mache!

vielen Dank im voraus!

Gruss Christoph
 
Mit welchen Betriebssystem wurde die Datei erstellt und worauf wird sie ausgeführt?
Ich würde vorschlagen einfach mal alle Umlaute zu entfernen, auch wenn es auch für mich keinen Sinn ergibt, dass der Fehler an genau dieser Stelle auftritt.
 
Die Datei wurde mit MacOS erstellt und wird auf nem Webserver ausgeführt(System weiss ich grad net) komischerweise funktioniert das ganze ja mit den gleichen Variablen

mfg
 
Zuletzt bearbeitet:
bin etwas verwirrt bei der unteren Version.
Was willst du eigentlich mit den vielen echos erreichen?

bzw. versuchst du $sql_db auszugeben, ich seh aber nirgends, dass die vorher definiert wurde, $sqladresse, $sqluser, $sqlpass hast du aber sicher vorher definiert
 
Die echos waren nur zur Kontrolle habe alles definiert (auch sql_db) im Prinzip wollte ich den Zugriff auf den sql server auslagern und entsprechend generalisieren. Am Anfang stand die Idee eine eigene Funktion zu schreiben die mit den entsprechenden Werten gefüttert wird und dann das Ergebnis mit dem return-Befehl zurück gibt.

zB.

PHP:
function sql_request($server,$user,$pass,$db,$anfrage){

//und hier dann mein 2.Beispiel

return ($abfrage);
}

am Ende sollte dann das SQL Ergebnis als Array zurück kommen ... da aber nicht mal die Abfrage korrekt läuft ist das erstmal in den Hintergrund gestellt
 
Moin,

hört sich irgendwie unlogisch an das ganze.

Um erstmal eine ganz banale Fehlerursache auszuschliessen:
Code:
Call to undefined function  mysql_select_db()
Das rot markierte Zeichen, steht das dort wirklich in der Fehlermeldung? Falls ja, wäre es u.U. interessant, wo es herkommt.

Ansonsten wäre es gut, wenn du den tatsächlichen Code komplett postest, anstatt nur Teile davon.

Wenn bspw. das 2. Fragment aus deinem 1. Posting in der Funktion aus deinem vorangegangenen Posting stehen, lassen sich dort jene Auffälligkeiten feststellen:

Die Funktion erhält u.A. die Parameter $server, $db und $anfrage.....in deinem 2. Codefragment verwendest du aber die Variablen $sql_server , $abfrage und $sql_db


Wenn du sagst, dass die Variablen irgendwo definiert sind, dann ist das schön, sofern sie aber nicht in der Funktion deklariert oder per global bekannt gemacht wurde,.ohne Wirkung.
 
zu deiner 1. Frage ja die Fehlermeldung wird genauso ausgegeben ... und woher das Zeichen kommt kann ich mir net erklären!

PHP:
<?php
		$sql_server="localhost";
		$sql_user="xxx";
		$sql_pass="xxx";
		$sql_db="xxx";
		$id = $_GET["id"];
		$abfrage = "SELECT name FROM site_id WHERE id = '$id'";
		
		
		$verbindung = mysql_connect($sql_server,$sql_user,$sql_pass);
		echo "".$verbindung."<br>";
		if(!$verbindung){
			echo "1.1";
			die('Kann die Verbindung nicht aufbauen! Fehler:'.mysql_error());
		}
		else{
			echo "".$sql_db."<br>";
			$db_selected=mysql_select_db($sql_db, $verbindung);
			echo "".$db_selected."<br>";
			if(!$db_selected){
				echo "2.2";
				die('Kanndie Datenbank '.$sql_db.'nichtbenutzen! Fehler:'.mysql_error());
			}
			else{
				$ergebnis=mysql_query($abfrage);
				if(!$ergebnis){
					die('Die Abfrage: '.$abfrage.' ist ungültig! Fehler:'.mysql_error());
				}
				else{
					if(mysql_num_rows ($ergebnis) > 0){
					$datensatz = mysql_fetch_array($ergbnis);
					var_dump ($datensatz);
					//HIER KOMMT DANN DER DATENSATZ ZURÜCK bzw return $datensatz;

					}
					else{
						die('Die Abfrage brachte kein Ergebnis!');
					}
				}
			}
		}
			
?>

kann es vllt mit den verschachtekten if-abfragen zu tun haben?
gruss christoph
 
Also den einzigen Fehler, den ich erkenne, findest du hier:
Code:
$datensatz = mysql_fetch_array($ergbnis);
...da fehlt das e

Ansonsten, wenn der Fehler danach immer noch auftritt(was er sollte, denn das fehlende e kann ihn nicht verursachen), hätte ich wohl etwas ähnliches in Verdacht wie DeluXe....ein Problem mit dem Dateiformat.

Speichere die Datei mit einem standardisierten Zeichensatz wie Latin1 oder UTF8, und konvertiere die Datei nach UNIX(dort besteht ein Zeilenumbruch aus einem Zeilenvorschub(LF)....beim MAC aus dem "Wagenrücklauf"(CR) )

So ansich funktioniert der Code(mit dem hinzugefügten e) bei mir problemlos.
 
Also ich hab das ganze noch mal mit dem UTF8 unter Linux konvertiert und ... nix ... gleiches problem wie vorher nur das jetzt plötzlich seltsame Zeichen ausgegeben werden!?
1. Resource id #5
2. web2s8874sql1

Fatal error: Call to undefined function  mysql_select_db() in /inhalt.php on line 30 <--
 
Zurück