• Jetzt anmelden. Es dauert nur 2 Minuten und ist kostenlos!

INSERT INTO klappt nicht

xFrager

Mitglied
Hallo,
ich habe ein Problem: Ich möchte, dass ein Text in eine Datenbank gespeichert wird. Jedoch funktioniert das "INSERT" nicht richtig. bzw. Ich weiß nicht, wie der Fehler zustande kommt.

Code aus der Datei mit dem Formular:
HTML:
                    <p>
                        <h1>Erstellen - Links</h1>
                        <form method="post" action="includes/eintrag_l.php">
                            <input type="hidden" name="date" value="<? echo date("Y-m-d H:i:s") ?><br />
                            <p>Überschrift<br /><input type="text" name="head"><br /></p>
                            <p>Eintrag<br /><textarea name="main" cols="50" rows="8"></textarea><br /></p>
                            <p><input type="submit" value="Eintrag erstellen"></p>
                        </form>
                    </p>

Code aus eintrag_l.php:
PHP:
<?php
    error_reporting(-1);
    ini_set('display_errors', true);
    $dbconfig = array();
    $dbconfig['host'] = "localhost";
    $dbconfig['user'] = "root";
    $dbconfig['pwd'] = "";
    $dbconfig['db'] = "cms";
   
    $con = mysql_connect($dbconfig['host'], $dbconfig['user'], $dbconfig['pwd']);
    mysql_select_db($dbconfig['db'], $con);
?>
<html>
    <head>
        <title>Eintrag wird erstellt</title>
    </head>
    <body>
        <?php
            $date = $_POST['date'];
            $head = $_POST['head'];
            $main = $_POST['main'];
           
            $eintrag = "INSERT INTO tbl_eintrag_links(eintrag_header,eintrag_main,eintrag_daytime) VALUES('$head','$main','$date')";
            $query = mysql_query($eintrag);
            echo "<p>Der Eintrag wurde erstellt.</p>";
            /*echo '<meta http-equiv="refresh" content="3; ../admin.php" />';*/
        ?>
    </body>

Wenn ich es so mache wird dieser Fehler angezeigt:

Code:
Deprecated: mysql_connect(): The mysql extension is deprecated and will be removed in the future: use mysqli or PDO instead in C:\xampp\htdocs\includes\eintrag_l.php on line 10

Es ist die Zeile, in der die Verbindung mit der Datenbank aufgebaut wird. Ich benutze diesen Code in jeder Datei, aber nur in dieser klappt er nicht.

Wisst ihr warum der Fehler da ist und wie man beheben kann?
Ich habe zwar bei Google schon was gefunde, bin daraus aber nicht schlau geworden.
 
So, also im oberen Teil stellt er die Verbindung schonmal her. Doch leider werde ich aus dem Artikel auf der selben Seite über mysqli_query nicht schlau...
 
Mein Quellcode sieht nun so aus. Es klappt aber immernoch nict..

PHP:
<?php
    error_reporting(-1);
    ini_set('display_errors', true);
    /*$dbconfig = array();
    $dbconfig['host'] = "localhost";
    $dbconfig['user'] = "root";
    $dbconfig['pwd'] = "";
    $dbconfig['db'] = "cms";*/
   
    DEFINE('DB_USER', 'root');
    DEFINE('DB_PASSWORD', '');
    DEFINE('DB_HOST', 'localhost');
    DEFINE('DB_NAME', 'cms');
   
    $mysqli = new mysqli(DB_HOST, DB_USER, DB_PASSWORD, DB_NAME);

    if (mysqli_connect_error()) {
        die('Connect Error (' . mysqli_connect_errno() . ') ' . mysqli_connect_error());
    }
?>
<html>
    <head>
        <title>Eintrag wird erstellt</title>
    </head>
    <body>
        <?php
            $date = $_POST['date'];
            $head = $_POST['head'];
            $main = $_POST['main'];
           
            $main = nl2br($main);
           
            $connect = new mysqli("localhost", "root", "", "cms")
                or die("MySQL-Error: " . mysql_error());

            $eintrag="INSERT INTO tbl_eintrag_links (eintrag_header, eintrag_main, eintrag_datetime)
                        VALUES
                            ('$head','$main','$date')";
       
            echo "<p>Der Eintrag wurde erstellt.</p>";
            /*echo '<meta http-equiv="refresh" content="3; ../admin.php" />';*/
        ?>
    </body>
 
Ich möchte jetzt nicht spammen, aber ist wer da der mir helfen kann? Das bremst mich grade total aus, da alles was ich noch machen möchte darauf basiert. Warum muss ich eigtl. nur hier mysqli verwenden und bei den anderen Seiten nicht?
 
Warum muss ich eigtl. nur hier mysqli verwenden und bei den anderen Seiten nicht?
Keine Ahnung, aber du solltest einfach auf Mysqli oder PDO umstellen, wie es die Fehlermeldung/Warnung sagt.

Aber eine andere Frage, Eintragen tut er doch, oder nicht? Wenn es darum geht die Warnungen auszuschalten, guck dir error_reporting an. Ist aber nicht zu empfehlen, und online wird es normalerweise auch nicht angezeigt.
 
Also bei deinem vorletzten Post führst du den Insert Befehl gar nicht aus. Du schreibst zwar die Query, aber das alleine bringt es nicht.

Außerdem hast du oben schon ein mysqli Object erstellt. Dieses kannst du auf der gesamten Seite verwenden.
 
hallö,

super fehlerbeschreibung "Es klappt aber immernoch nict.."

und am Anfang macht error anzeigen aus, eigentlich macht man die gerade an wenn was nicht funktioniert :-) .

cheffchen
 
Moin Cheffchen, was meinst du damit
und am Anfang macht error anzeigen aus, eigentlich macht man die gerade an wenn was nicht funktioniert :) .

Denn die fehlermeldungen anzeigen tut er ja
Mit error_reporting(-1); lässt man sich alle PHP Fehler anzeigen

Oder ich versteh dich gerade falsch :)
 
Punkt 1: Wieso 2x new mysqli
Punkt 2: Wenn man auf mysqli umsteigt sollte man wohl eher nicht mehr mysql_error verwenden :D
Punkt 3: Wenn man einen String zusammenbaut, wird auch bei MySQLi nichts von alleine in die DB geschrieben :D
 
Hallo,
@B3nnoX stimmt error ist ok, keine ahnung wie ich auf den trichter gekommen bin.

also schau dir mal das TUT an, das ist das nötigste was brauchst und verständlucher: http://www.peterkropff.de/site/php/mysqli.htm

und wie @bdt600 schon schreibt baust zwar alles fein zusammen zum speichern/einfügen aber machst das nicht, aufs gaspedal musst schon tretten sonnst fährt er nicht los :O)

das mysqli_query($eintrag); fehlt am ende.

Cheffchen
 
Ihr wisst aber schon, dass er dort oben ein Object erzeugt hat oder

Also müsste es so lauten
connect->query($eintrag);
oder
$mysqli->query($eintrag);

Kommt denn drauf an welches der beiden Objecterzeugung er raus nimmt.
 
Warum sollte die Warnung denn noch angezeigt werden, es wurde doch von mysql auf mysqli umgestellt und damit ist die Warnung auch weg
 
Zurück
Oben