2016-10-25 1 views
0

Ich arbeite an einem Pastebin Klon Art von etwas (von Grund auf, Klonen pastebin nicht wörtlich, nur eine Alternative) und ich habe ein Problem beim Einfügen von Zeit in die Datenbank.Zeit in MySQL-Datenbank mit PDO einfügen

<?php 
require 'connection.php'; 

    $paste = $_POST['paste']; 
    $title = $_POST['title']; 

     //$sql = "INSERT INTO pasteinfo (title, paste) VALUES (:title, :paste)"; 

      $stmt = $con->prepare("INSERT INTO pasteinfo (title, paste) VALUES (:title, :paste)"); 

       echo "hi"; 
      $stmt->bindParam(':paste', $paste); 
      $stmt->bindParam(':title', $title); 
     $stmt->execute(); 
    echo "Pasted!"; 


    $pastetime = new DateTime(); 
    $timeQuery = $con->prepare("INSERT INTO pasteinfo (pastetime) VALUES (:pastetime)"); 
    $time->bindParam(':pastetime', $pastetime); 
    $con->exec($timeQuery); 

//$con = null; 




?> 

Das ist also insert.php. Ich hoffe, dass, wenn ein Benutzer ihre Paste "pastet", es Zeit aufzeichnen wird, und dann auf meiner viewpaste.php es den Titel anzeigen wird, Paste und Zeit, die die Paste gemacht wurde.

Was ist los damit?

Übrigens ignorieren Sie einfach das kleine Echo "Hallo"; hineingeworfen. Es hat mir geholfen, Fehler zu beheben und tut dies auch weiterhin.

connection.php Quelle:

<?php 
    try { 
    $con = new PDO('mysql:host=;dbname=;charset=utf8mb4','',''); 
    $con->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
    $con->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 
    } 
    catch (PDOException $ex){ 
    echo $ex->getMessage();return false; 
    } 

    function retrieve($query,$input) { 
    global $con; 
    $stmt = $con->prepare($query); 
    $stmt->execute($input); 
    $stmt->setFetchMode(PDO::FETCH_OBJ); 
    return $stmt; 
} 

@Drew:

<?php 
require 'connection.php'; 

    $paste = $_POST['paste']; 
    $title = $_POST['title']; 
    $timeQuery = "SELECT NOW()"; 

     //$sql = "INSERT INTO pasteinfo (title, paste) VALUES (:title, :paste)"; 

      $stmt = $con->prepare("INSERT INTO pasteinfo (title, paste, pastetime) VALUES (:title, :paste, :pastetime)"); 

       echo "hi"; 
      $stmt->bindParam(':paste', $paste); 
      $stmt->bindParam(':title', $title); 
      $stmt->bindParam(':pastetime', $timeQuery); 
     $stmt->execute(); 
    echo "Pasted!"; 


    //$timeQuery = $con->prepare("INSERT pasteinfo(pastetime) SELECT NOW()"); 
    //$timeQuery->execute(); 

//$con = null; 




?> 
+0

warum würden Sie nicht nur tun 'wählen jetzt()' 'vs VALUES (: pastetime)'? Auch der mögliche Zweck ist die Tabelle 'pasteinfo', die mit keinen anderen Spalten nutzlos erscheint. – Drew

+0

Wenn der Datentyp datetime ist, können Sie das Datum (" Ymd h: i: s ") für das Datum – vishwakarma09

+0

@Drew verwenden jetzt(). Funktioniert es mit dem DateTime-Format? –

Antwort

0

Schema und End-Zustand nach dem Skript ausgeführt einmal:

enter image description here

Schema:

drop table if exists pasteinfo2; 
CREATE TABLE pasteinfo2 
( ai INT AUTO_INCREMENT PRIMARY KEY, 
    title VARCHAR(200) NOT NULL, 
    paste TEXT NOT NULL, 
    pastetime DATETIME NOT NULL 
); 

PHP-Skript:

<?php 
    // turn on error reporting, or wonder why nothing is happening at times 
    error_reporting(E_ALL); 
    ini_set("display_errors", 1);  

    // Begin Vault 
    // credentials from a secure Vault, not hard-coded (so the below is just for testing) 
    $servername="localhost"; 
    $dbname="so_gibberish"; 
    $username="nate"; 
    $password="cannonBall##)x"; 
    // End Vault 

    try { 
     $pdo = new PDO("mysql:host=$servername;dbname=$dbname", $username, $password); 
     $pdo->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION); 
     $pdo->setAttribute(PDO::ATTR_EMULATE_PREPARES, false); 

     $paste="Four score and seven years ago, our fore...."; 
     $title="Gettysburg Address"; 

     $stmt = $pdo->prepare("INSERT INTO pasteinfo2 (title, paste, pastetime) VALUES (:title, :paste, now())"); 
     $stmt->bindParam(':paste', $paste); 
     $stmt->bindParam(':title', $title); 
     $stmt->execute(); 
     echo "Yo I am here<br>"; 
    } catch (PDOException $e) { 
     echo 'pdo problemo: ' . $e->getMessage(); // dev not production code 
     exit(); 
    } 
?> 
+0

Vielen Dank! –

+0

kein Problem Chef. Entschuldigung wegen meines Missverständnisses. Ich dachte, du hättest zwei Tische und keinen. – Drew