2017-04-12 2 views
0

Ich arbeite an einem Projekt mit PHP und versuche, einige Daten in eine MySQL-Datenbank einzufügen. Wenn ich den Code online ausführe und versuche, die Daten in die Datenbank einzufügen, erhalte ich einen fatalen Fehler. Von der Fehlermeldung denke ich, dass es mit der Tatsache zu tun hat, dass die Datenbank einen Zeitstempel verwendet. Ich habe versucht, NOW() zu verwenden, um das aktuelle Datum und die Uhrzeit einzufügen, aber es hat nicht funktioniert. Wenn mir jemand in die richtige Richtung zeigen könnte, würde ich es sehr schätzen.Versuchen, einige Daten in eine MySQL-Datenbank einzufügen

The image is of the structure of the table (frs_Payment). I am trying to insert the data into this table

Dies ist die Fehlermeldung

Fatal error: Uncaught exception 'Exception' with message 'Database Error [1064] You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near '12:41:28, NIN012, 12, 1, 1)' at line 1' in E:\xampp\htdocs\CIT2318\Relational database and web integration\models\DAO.php:23 Stack trace: #0 E:\xampp\htdocs\CIT2318\Relational database and web integration\models\LoanModel.php(15): DAO->query('INSERT INTO frs...') #1 E:\xampp\htdocs\CIT2318\Relational database and web integration\controllers\LoanController.php(24): LoanModel->insertRental('104', '10.50', '2015-05-22 12:4...', 'NIN012', '12', '1', '1') #2 {main} thrown in E:\xampp\htdocs\CIT2318\Relational database and web integration\models\DAO.php on line 23 

aktualisieren, New Fehlermeldung

INSERT INTO frs_Payment (payid, amount, paydatetime, empnin, custid, pstatusid, ptid) VALUES (104, 10.50, '2015-05-22 12:41:28', 'NIN012', 1, 1, 1) 
Fatal error: Call to a member function fetch_assoc() on boolean in E:\xampp\htdocs\CIT2318\Relational database and web integration\controllers\LoanController.php on line 25 

ich nun in der Lage bin Daten in die Datenbank einfügen, aber das jetzt Neue Fehlermeldung ist erschienen. Irgendwelche Ideen, wie ich das lösen kann.

Dies ist der Kredit-Controller

<?php 

session_start(); 
require_once("../models/LoanModel.php"); 
require_once("../views/LoanView.php"); 

$error = ""; 

if (isset($_POST["Submit"])) { 
$payid=($_POST["payid"]); 
$amount=($_POST["amount"]); 
$paydatetime=($_POST["paydatetime"]); 
$empnin=($_POST["empnin"]); 
$custid=($_POST["custid"]); 
$pstatusid=($_POST["pstatusid"]); 
$ptid=($_POST["ptid"]); 

if (empty($payid)) { 
    //header('Location: ../views/LoanView.php?error=1'); 
    $error = "Payment ID is required"; 
} else { 

$lgi = new LoanModel; 
$result = $lgi->insertRental($payid, $amount, $paydatetime, $empnin,  $custid, $pstatusid, $ptid); 
$row = $result->fetch_assoc(); 
$error = ""; 
$_SESSION['payid'] = $row["payid"]; 
$_SESSION['amount'] = $row["amount"]; 
$_SESSION['paydate'] = $row["paydatetime"]; 
$_SESSION['employeeid'] = $row["empnin"]; 
$_SESSION['customerid'] = $row["custid"]; 
$_SESSION['pstatus'] = $row["pstatusid"]; 
$_SESSION['ptype'] = $row["ptid"]; 

header('Location: ../views/MenuView.php'); 
} 
echo "<hr>" . $error; 
} 

?> 

Dies ist das Darlehen Modell AKTUALISIERT

<?php 
require_once('DAO.php'); 

class LoanModel extends DAO{ 

protected $target = "frs_Payment"; 

public function __construct(){ 
    parent::__construct(); 
} 

public function insertRental($payid, $amount, $paydatetime, $employeeid, $customerid, $pstatusid, $ptid){ 
    $sql = "INSERT INTO frs_Payment (payid, amount, paydatetime, empnin, custid, pstatusid, ptid) VALUES ($payid, $amount, '$paydatetime', '$employeeid', $customerid, $pstatusid, $ptid)"; 
echo $sql; 
    return parent::query($sql); 
} 
} 
?> 

das Darlehen Ansicht Dies ist

+1

Eine Sache, die ich immer tun muss, um meine Abfragen zu verifizieren, ist ein 'var_dump' oder' echo' der tatsächlichen SQL und Variablen in '$ lgi-> insertRental' und dann manuell versuchen, es in phpMyAdmin auszuführen. Das wird Ihnen helfen, einzugrenzen, wenn es sich um einen Syntaxfehler in SQL oder einen Parameter count mismatch o.ä. handelt. – WOUNDEDStevenJones

+1

Es besteht auch die Möglichkeit, dass Sie versuchen, ein 'datetime' in ein 'timestamp'-Feld einzufügen. Datetime ist im Format "YYYY-MM-DD HH: ii: ss" gegen einen Zeitstempel, der eine ganze Zahl ist (Anzahl der Sekunden seit der Unix-Epoche). Weitere Informationen finden Sie unter http://stackoverflow.com/questions/5362874/how-to-convert-timestamp-to-datetime-in-mysql. – WOUNDEDStevenJones

+0

Was @WOUNDEDStevenJones sagte. Echo die tatsächliche SQL, die an die Datenbank gesendet wird, und der Syntaxfehler sollte offensichtlich sein. – Goose

Antwort

0

Sie müssen Sie Variable wickeln heute mit Apostroph.

$sql = "INSERT INTO frs_Payment (payid, amount, paydatetime, empnin, custid, pstatusid, ptid) VALUES ($payid, $amount, '$paydatetime', $employeeid, $customerid, $pstatusid, $ptid)"; 

Und stellen Sie sicher, dass das Format richtig ist: try $ paydatetime = date ("Y-m-d H: i: s");

Verwandte Themen