Werte in Datenbank speichern

Andre267

Erfahrenes Mitglied
Schönen guten Abend,

ich versuche gerade folgendes in meine DB zu speichern: Wert 1: 2014-09-01 Wert 2: 2014-09-02
Es wird auch was in die Datenbank gespeichert allerdings was etwas anderes. o_O
Wert 1 sieht da so aus: 2004 und Wert 2: 2002

Das ganze läuft über folgendes Script:
Code:
<?php
$host2="localhost";
$port2=3306;
$socket2="";
$user2="root";
$password2="";
$dbname2="scripts";


$con2 = new mysqli($host2, $user2, $password2, $dbname2, $port2, $socket2)
    or die ('Could not connect to the database server' . mysqli_connect_error());


$query2 = "INSERT INTO user (start_date, end_date) VALUES(".$start_date.", ".$end_date.")";
$statement2 = $con2->query($query2);

//bind parameters for markers, where (s = string, i = integer, d = double,  b = blob)
//$statement2->bind_param('ss', $start_date, $end_date);

if($statement2){
    echo "Folgende Daten wurden eingetragen: ".$start_date." - ".$end_date;
}else{
    die('Error : ('. $mysqli->errno .') '. $mysqli->error);
}
  
$con2->close();
?>
eingestellt habe ich dafür Varchar(18)
Wo mache ich da einen Fehler?
 
Hi,

wenn du Strings und Dates in der Datenbank speichern willst, so musst du diese in einfache Anführungszeichen ( ' ) setzen, im oberen Beispiel sollte die Zeile 15 also so aussehen:
PHP:
$query2 = "INSERT INTO user (start_date, end_date) VALUES('".$start_date."', '".$end_date."')";

Der Code sieht schon ganz gut aus, würde das ganze aber über Statements machen. Ist leichter zu lesen und du hast eh schon ein paar Vorbereitungen:
PHP:
$query2 = "INSERT INTO user (start_date, end_date) VALUES('?', '?')";
$statement2= $con2->prepare($query2);
$statement2->bind_param('ss', $start_date, $end_date);
$statement2->execute();

Als letzten Vorschlag: Da du anscheinend ja Dates speichern willst würde ich die Spalte nicht als varchar definieren sondern gleich direkt als date.

Grüße,
BK
 
Zuletzt bearbeitet:
Zurück