sabrina: mysql datenbank einbinden!

Hallo!

Habe ein Problem mit der Einbindung einer mysql Datenbank (Name ist binary_data). Habe auch schon das Forum durchforsten, bin aber leider nicht schlauer geworden.

Folgenden Code habe ich:
--------------------------
<?php

// store.php3 - by Florian Dittmer dittmer@gmx.net
// Example php script to demonstrate the storing of binary files into
// an sql database. More information can be found at http://www.phpbuilder.com/
?>

<HTML>
<HEAD><TITLE>Store binary data into SQL Database</TITLE></HEAD>
<BODY>

<?php
// code that will be executed if the form has been submitted:

if ($submit) {

// connect to the database
    // (you may have to adjust the hostname,username or password)

MYSQL_CONNECT("localhost","root","passwort");
    mysql_select_db("binary_data");

$data = mysql_escape_string(fread(fopen($form_data, "rb"), filesize($form_data)));

$result=MYSQL_QUERY("INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) ".
        "VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");

$id= mysql_insert_id();
    print "<p>This file has the following Database ID: <b>$id</b>";

MYSQL_CLOSE();

} else {

// else show the form to submit new data:
?>

<form method="post" action="<?php echo $PHP_SELF; ?>" enctype="multipart/form-data">
    File Description:<br>
    <input type="text" name="form_description"  size="40">
    <INPUT TYPE="hidden" name="MAX_FILE_SIZE" value="1000000">
    <br>File to upload/store in database:<br>
    <input type="file" name="form_data"  size="40">
    <p><input type="submit" name="submit" value="submit">
    </form>

<?php

}

?>

</BODY>
</HTML>
-------------------------------------------------

und bekomme immer wieder diese Fehlermeldungen

Warning: MySQL Connection Failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /homepages/../../../store.php3 on line 20

Warning: MySQL Connection Failed: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2) in /homepages/../../../store.php3 on line 21

Warning: MySQL: A link to the server could not be established in /homepages/../../..//store.php3 on line 21

Fatal error: Call to unsupported or undefined function mysql_escape_string() in /homepages/../../../store.php3 on line 24

Was mache ich falsch? MySQL und PHP laufen problemlos, ich habe auch sämtliche Rechte. Hat irgendjemand ein Tip?

Vielen Dank
Sabrina

  1. hi,

    MYSQL_CONNECT("localhost","root","passwort");
        mysql_select_db("binary_data");

    bei einen connect bekommst du immer einen handler zurück. das ist sozusagen ein ausweis, den du bei jedem datenbankzugriff mit angibst, um dich nicht immer anmelden zu müssen.

    $verbindung = MYSQL_CONNECT("localhost","root","passwort");
    mysql_select_db("binary_data", &verbindung);

    versuchs mal damit

    Ilja

    1. Moin!

      bei einen connect bekommst du immer einen handler zurück. das ist sozusagen ein ausweis, den du bei jedem datenbankzugriff mit angibst, um dich nicht immer anmelden zu müssen.

      Das ist zwar auch richtig (ich möchte wirklich mal wissen, von welcher überarbeitungswürdigen Vorlage Sabrina das abgeschrieben hat...) aber sollte nicht zum beschriebenen Problem führen.

      Übrigens benutzen die MySQL Funktionen im Zweifel die letzte Verbindung, wenn keine Verbindungskennung angegeben wurde. Nur bei der Arbeit mit mehreren Datenbanken gleichzeitig ist dies unumgänglich.
      Dennoch, und dasmit hast Du Recht, ist es eine Frage der Disziplin und der zukunftssicheren Programmierung, die Verbindungskennung in einer Variable zu halten und immer anzugeben.

      MFFG (Mit freundlich- friedfertigem Grinsen)

      fastix®

      --
      Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
  2. Moin!

    MYSQL_CONNECT("localhost","root","passwort");
        mysql_select_db("binary_data");

    [1] Stehen hier die richtigen Daten?
    [2] Schau mal in die php.ini, was dort zum Thema Socket steht. Eventuell musst Du diesen anpassen.

    In [mysql]
    ....
    mysql.default_socket =  < hier den Socket eintragen.

    $result=MYSQL_QUERY("INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) ".
            "VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')");

    Das kann zwar gehen, ist aber nicht ideal.

    Mach das besser so:

    $SQL="INSERT INTO binary_data (description,bin_data,filename,filesize,filetype) VALUES ('$form_description','$data','$form_data_name','$form_data_size','$form_data_type')";

    $result=mysql_querry($SQL) or die ("<hr>Eintrag fehlgeschlagen:<hr>".$SQL."<hr>".mysql_error()."<hr>")

    MFFG (Mit freundlich- friedfertigem Grinsen)

    fastix®

    --
    Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.
    1. Vielen Dank erstmal für die schnelle Antwort.

      MYSQL_CONNECT("localhost","root","passwort");
      mysql_select_db("binary_data");

      [1] Stehen hier die richtigen Daten?

      JA, da bin ich mir sehr sicher

      [2] Schau mal in die php.ini, was dort zum Thema Socket steht. Eventuell musst Du diesen anpassen.

      Hier steh ich leider total auf dem Schlauch, was müsste denn dort anzupassen sein. Finde im Netz auf die Schnelle auch nichts was mir da weiterhilft.

      Scheine echt zu doof zu sein, um eine einfache Verbindung herzustellen.

      Gruß
      Sabrina

      1. hi Sabrina,

        hast du es mal probiert mit den änderungen, die ich vorgeschlagen habe ?

        Ilja

      2. Moin!

        [2] Schau mal in die php.ini, was dort zum Thema Socket steht. Eventuell musst Du diesen anpassen.
        Hier steh ich leider total auf dem Schlauch, was müsste denn dort anzupassen sein. Finde im Netz auf die Schnelle auch nichts was mir da weiterhilft.

        Hm. Wenn die Datenbank unter Unix/Linux/BSD auf dem gleichen Host läuft, wie das PHP-Skript, dann muss dort der gleiche Eintrag stehen, wie in der my.conf (/etc/my.conf).

        Die Abschnitte in den Dateien müssen gleich lauten:
        #################################
        /etc/my.conf:  (bei ca. Zeile 20)
        #################################
        [mysqld]
        port: 3306
        socket: /var/lib/mysql/mysql.sock

        #################################
        /etc/php.ini: (etwa Zeile 600)
        #################################

        [MySQL]
        #...
        mysql.default.port = 3306
        #...
        mysql.default.socket = /var/lib/mysql/mysql.sock

        ################################

        Alternativ kannst Du auch prinzipiell über das Netzwerk arbeiten und den Eintrag für den Standard- MySQL- Socket jeweils leer lassen. Unter Windows ist genau das Standard.

        MFFG (Mit freundlich- friedfertigem Grinsen)

        fastix®

        --
        Als Freiberufler bin ich immer auf der Suche nach Aufträgen: Schulungen, Development. Auch  für seriöse Agenturen.