tutorials.de Buch-Aktion 05/2012
ERLEDIGT
JA
ANTWORTEN
12
ZUGRIFFE
920
EMPFEHLEN
  • An Twitter übertragen
  • An Facebook übertragen
AUF DIESES THEMA
ANTWORTEN
  1. #1
    Panzer Panzer ist offline Mitglied Bronze
    Registriert seit
    Dec 2003
    Beiträge
    45
    Hallo zusammen,

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

    PHP-Code:
    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-Code:
            $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?
    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
     

  2. #2
    DeluXe DeluXe ist offline Funkjoker
    Registriert seit
    Jul 2004
    Ort
    Offenburg
    Beiträge
    847
    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.
     
    mfg

    DeluXe

  3. #3
    Panzer Panzer ist offline Mitglied Bronze
    Registriert seit
    Dec 2003
    Beiträge
    45
    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
    Geändert von Panzer (19.09.09 um 23:49 Uhr)
     

  4. #4
    tandalier tandalier ist offline Rookie
    Registriert seit
    Dec 2007
    Beiträge
    8
    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
     

  5. #5
    Panzer Panzer ist offline Mitglied Bronze
    Registriert seit
    Dec 2003
    Beiträge
    45
    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-Code:

    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
     

  6. #6
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Moin,

    hört sich irgendwie unlogisch an das ganze.

    Um erstmal eine ganz banale Fehlerursache auszuschliessen:
    Code :
    1
    
    Call to undefined function [COLOR="Red"][SIZE="6"]Â[/SIZE][/COLOR] 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.
     

  7. #7
    Panzer Panzer ist offline Mitglied Bronze
    Registriert seit
    Dec 2003
    Beiträge
    45
    zu deiner 1. Frage ja die Fehlermeldung wird genauso ausgegeben ... und woher das Zeichen kommt kann ich mir net erklären!

    PHP-Code:
    <?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
     

  8. #8
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Also den einzigen Fehler, den ich erkenne, findest du hier:
    Code :
    1
    
    $datensatz = mysql_fetch_array($er[COLOR="Red"]gb[/COLOR]nis);
    ...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.
     

  9. #9
    Panzer Panzer ist offline Mitglied Bronze
    Registriert seit
    Dec 2003
    Beiträge
    45
    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 <--
     

  10. #10
    Avatar von Flex
    Flex Flex ist offline (aka Felix Jacobi)
    tutorials.de Moderator
    Registriert seit
    Nov 2001
    Ort
    Wuppertal
    Beiträge
    5.295
    Blog-Einträge
    65
    Das ersten Zeichen deutet darauf hin, dass du es mit Byte Order Mark (BOM) abgespeichert hast.
    Das sollte nicht so sein, sondern UTF-8 ohne BOM.
     
    KIDS Kinderbetreuungsdienst
    Xing

    "When you play the game of thrones, you win or you die. There is no middle ground."
    by Cersei Lannister in "A Game Of Thrones"

  11. #11
    Panzer Panzer ist offline Mitglied Bronze
    Registriert seit
    Dec 2003
    Beiträge
    45
    ok das wäre geklärt ... aber das script an sich noch nicht -.-
    vllt noch jemand nen tip? bzw kann vllt jemand das script mal bei sich ausführen?

    danke schon mal im voraus

    ps nehmt das zweite gepostete script
     

  12. #12
    Avatar von Sven Mintel
    Sven Mintel Sven Mintel ist offline Mitglied
    Registriert seit
    Aug 2003
    Beiträge
    18.238
    Blog-Einträge
    6
    Ich hab das 2. gepostete Skript gestern bei mir ausgeführt, und es funktionierte problemlos. )
    Vor allem kein Â

    Hänge doch dies Skript mal als Anhang hier ran(so wie es auf dem Webserver liegt), vielleicht filtert die Forensoftware ja irgendwas aus dem Code raus.

    Ahso...natürlich vorher deine Zugangsdaten entfernen
     

  13. #13
    Panzer Panzer ist offline Mitglied Bronze
    Registriert seit
    Dec 2003
    Beiträge
    45
    Habe nocheinmal alles überprüft ... den Variablen-Namen geändert ... tadaaa es funktioniert Aber fragt mich nicht warum!

    Hier nochmal das Script:

    PHP-Code:
            $sql_server="localhost";
            
    $sql_user="xxx";
            
    $sql_pass="xxx";
            
    $sql_datenbank="xxx";
            
    $id $_GET["id"];
            
    $request "SELECT name FROM site_id WHERE id = '$id'";

            
            
            
            
    $verbindung mysql_connect($sql_server,$sql_user,$sql_pass);
            echo 
    "1. ".$verbindung."<br>";
            if(!
    $verbindung){
                echo(
    'Kann die Verbindung nicht aufbauen! Fehler:'.mysql_error());
            }
            else{
                echo 
    "2. ".$sql_datenbank."<br>";
                
    $db_selected mysql_select_db($sql_datenbank$verbindung);
                if(!
    $db_selected){
                    echo(
    'Kanndie Datenbank '.$sql_db.'nichtbenutzen! Fehler:'.mysql_error());
                }
                else{
                    echo 
    "3. ".$db_selected."<br>";
                    
    $ergebnis mysql_query($request$verbindung);
                    
    //$ergebnis=mysql_query($abfrage, $verbindung);
                    
    if(!$ergebnis){
                        echo(
    'Die Abfrage: '.$request.' ist falsch! Fehler:'.mysql_error());
                    }
                    else{
                        echo
    "4. ".$ergebnis."<br>";
                        if(
    mysql_num_rows ($ergebnis) > 0){
                        
    $datensatz mysql_fetch_array($ergebnis);
                        
    var_dump ($datensatz);
                        }
                        else{
                            echo(
    'Die Abfrage '.$request.' brachte kein Ergebnis!');
                        }
                    }
                }
            } 
    Danke an alle die sich hier bemüht haben!!

    Christoph
     

Ähnliche Themen

  1. Fehler bei mysql_select_db() innerhalb einer Funktion
    Von sheeba1507 im Forum Relationale Datenbanksysteme
    Antworten: 2
    Letzter Beitrag: 05.10.10, 03:03
  2. Funktion gibt nichts zurück
    Von queicherius im Forum PHP
    Antworten: 8
    Letzter Beitrag: 14.08.09, 19:53
  3. Funktion gibt nix zurück
    Von Soapp im Forum PHP
    Antworten: 6
    Letzter Beitrag: 18.09.06, 19:02
  4. Antworten: 1
    Letzter Beitrag: 06.10.05, 15:33
  5. Thumbnail-Funktion gibt Bild-Code zurück
    Von Moritz123 im Forum PHP
    Antworten: 4
    Letzter Beitrag: 11.05.05, 11:00

Stichworte