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

Probleme mit schreiben in eine MySQL Tabelle

  • Ersteller Ersteller matibaski
  • Erstellt am Erstellt am
Status
Für weitere Antworten geschlossen.
M

matibaski

Guest
Moin!

Was ist hier falsch?
PHP:
<?php
error_reporting(E_ALL);

// Config
include"config.php";

@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Die Verbindung kann nicht aufgebaut werden");

mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

$eintrag = mysql_query("INSERT INTO `News` (
    (`Titel`,`Inhalt`,`Datum`,`Autor`)
VALUES
    ('Mein erster Versuch, Tabellen zu füllen ueber PHP',
     'Mein erster Testversuch,Tabellen einer MySQL Datenbank zu füllen',
     NOW(),
     'matibaski'))
");

if($eintrag)
{
echo"Geschrieben";
}
else
{
echo"Nicht geschrieben!";
}
?>

Die config.php sieht so aus:
PHP:
<?php
error_reporting(E_ALL);

define('MYSQL_HOST',      'localhost');
define('MYSQL_USER',      'geheim');
define('MYSQL_PASS',      'geheimer');
define('MYSQL_DATABASE',  'testbank');
?>

Also die verbindung istja hergestellt. Sonst würde die die() Meldung kommen, und die Datenbank wurde auch gewählt.

Doch wo ist der Fehler?
Es kommt immer die else {} Meldung, dass es nicht geschrieben wurde.
 
Erscheint folgendes:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(`Titel`,`Inhalt`,`Datum`,`Autor`) VALUES (`Meine erste News`, `Dies ist' at line 2

Den Code habe ich umgeschrieben.
PHP:
<?php
error_reporting(E_ALL);

// Config
include"config.php";

// Verbindung wird hergestellt
@mysql_connect(MYSQL_HOST, MYSQL_USER, MYSQL_PASS) OR die("Die Verbindung kann nicht aufgebaut werden");

// Die Datenbank wird ausgewählt
mysql_select_db(MYSQL_DATABASE) OR die(mysql_error());

// Der Eintrag wird bestimmt
$eintrag = "INSERT INTO `News` (
    (`Titel`,`Inhalt`,`Datum`,`Autor`)
VALUES
    (`Mein erster Versuch`,
    `Mein erster Versuch Tabellen zu füllen.`,
    NOW(),
    `matibaski`))
";

// Prüfen ob der Eintrag gemacht wurde
mysql_query($eintrag) OR die(mysql_error()); 
?>
Es kommt mit diesem Code der Fehler.

Es stimmt ja etwas bei $eintrag nicht.
Nur was?
 
PHP:
$eintrag = "INSERT INTO `News` (
    (Titel,Inhalt,Datum,Autor)
VALUES
    (Mein erster Versuch,
    Mein erster Versuch Tabellen zu füllen.,
    NOW(),
    matibaski))
";
 
Zuletzt bearbeitet von einem Moderator:
Ne. Geht nicht.
Es kommt folgender Error:
You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '(Titel,Inhalt,Datum,Autor) VALUES (Mein erster Versuch, Mein erster Vers' at line 2

Der Fehler besteht immernoch.
 
PHP:
<?php
$eintrag = "INSERT INTO News (
VALUES
    ("Mein erster Versuch",
    "Mein erster Versuch Tabellen zu füllen.",
    ".NOW().",
    "matibaski"))
";
?>

Nils aka XraYSoLo
 
Mein Gott ich glaub mein Server spinnt.
Er gibt den Fehler aus. Unexpected T_STRING auf Linie 16

Das ist auf Linie 16:
PHP:
    ('Mein erster Versuch',

Doch hier ist gar kein Fehler vorhanden.

Mannoman..:-|

Kann das daran liegen, dass ich die Spalte ID ausgelassen habe?
Ich habe dort einfach bei CREATE TABLE den auto. Wert zugewiesen, dass es immer eins höher machen soll.
 
PHP:
$eintrag = "INSERT INTO News (Titel, Inhalt, Datum, Autor) VALUES ('Mein erster Versuch', 'Hallo', '.now().', 'matibaski')";
Wenn du die Spalte ID auf auto_increment hast musst du die Spalte nicht selbst füllen.
Dafür gibt es ja die Eigenschaft auto_increment.
 
Ok danke.
Da mein Newssystem auch Sachen schreiben kann, die jemand geschrieben hat, dachte ich ich mache es so:
PHP:
if($_POST['submit']) // Wenn etwas geschrieben wurde
{
// Übernehmen
$eintrag = "INSERT INTO News 
                (Titel, 
                Inhalt, 
                Datum, 
                Autor) 
            VALUES 
                ('.$_POST['titel'].', 
                '.$_POST['text'].', 
                '.now().', 
                '.$_POST['autor'].')"; 
                
mysql_query($eintrag) OR die(mysql_error());
echo'News gespeichert<br><br><br>';
}
Doch es erscheint diese Nachricht:
Parse error: parse error, unexpected T_ENCAPSED_AND_WHITESPACE, expecting T_STRING or T_VARIABLE or T_NUM_STRING in /home/httpd/vhosts/paradoxe.de/subdomains/habboville/httpdocs/mysql/index.php on line 15

Diese Version ging auch nicht:
PHP:
if($_POST['submit']) // Wenn etwas geschrieben wurde
{
// Übernehmen
$eintrag = "INSERT INTO News 
                (Titel, 
                Inhalt, 
                Datum, 
                Autor) 
            VALUES 
                ($_POST['titel'], 
                $_POST['text'], 
                now(), 
                $_POST['autor'])"; 
                
mysql_query($eintrag) OR die(mysql_error());
echo'News gespeichert<br><br><br>';
}

Doch was ist hier falsch?

MfG, matibaski
 
PHP:
<?php
if($_POST['submit']) // Wenn etwas geschrieben wurde
{
// Übernehmen
$eintrag = "INSERT INTO News
                (Titel,
                Inhalt,
                Datum,
                Autor)
            VALUES
                ('".$_POST['titel']."',
                '".$_POST['text']."',
                '".now()."',
                '".$_POST['autor']."'
                )";
} 
?>

Nils aka XraYSoLo
 
Was jetzt?
time() oder date() ??
Ich denke dass Time die Uhrzeit angibt, und date() das Datum.

Dan etwa so vielleicht?
PHP:
"'.date.'-'.time.'"
So würde es beides anzeigwn.
Es kann auch sein, dass meine Vermutung bei date() und time() falsch ist.

MfG, matibaski

edit:
Hab's ausprobiert mit date() und mit time().
Doch es kommt immernoch folgendes:
0000-00-00 00:00:00

Hier ist der Teil des Scriptes. Hab's umgeändert auf eine einfachere Art. So gehts ohne "'..'"
PHP:
$eintrag = "INSERT INTO News (Titel,Inhalt,Datum,Autor) VALUES ('$titel', '$text', 'date()', '$autor')";

Die Variablen $titel, $text und $autor wurden hier bestimmt:
$titel = $_POST['titel'];
$text = $_POST['text'];
$autor = $_POST['autor']

MfG, matibaski
 
Zuletzt bearbeitet von einem Moderator:
nein du musst
PHP:
time()
nehmen

PHP:
time()
gibt dir einen Timestamp zurück. Das sind die Sekunden die seit dem 1.1.1970 vergangen sind. Die speicherst du in deiner Datenbank.

Wenn du das Jetzt aber ausgibst, versteht das kein mensch, denn jetzt wäre es zum beispiel 1173004030.

Damit jetzt jemand damit zurecht kommt, nimmst du die funktion
PHP:
date()
bei der ausgabe. z.b. so
PHP:
$timestamp = time() //du bekommst den dann aus der DB
echo date("d.m.y",$timestamp);
Das würde dir nun ein Datum im Format DD.MM.JJ geben.
Was du sonst noch in der funktion date() benutzen kannst findest du im manual
 
Status
Für weitere Antworten geschlossen.
Zurück
Oben