2017-04-12 95 views
0

我在使用PHP一个项目,我试图插入一些数据MySQL数据库。当我在线运行代码并尝试将数据插入数据库时​​,出现致命错误。从错误消息中,我认为这可能与数据库使用时间戳的事实有关。我试图使用NOW()来插入当前的日期和时间,但它没有奏效。如果任何人可以指出我在正确的方向,将不胜感激。试图插入一些数据MySQL数据库

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

这是错误消息

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 

更新,新的错误消息

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 

我现在能够将数据插入到数据库中,但现在这新的错误信息出现了。任何想法如何我可以解决这个问题。

这就是贷款控制器

<?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; 
} 

?> 

这是贷款模式 修订

<?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); 
} 
} 
?> 

这就是贷款视图

<html> 
<head> 
</head> 
<body> 
<h1>Add a new rental</h1> 
<form action="../controllers/LoanController.php" method="POST"> 

    <label for="payid">Payment ID</label> 
    <input type="text" id="payid" name="payid"> 
    <p> </p> 
    <label for="amount">Amount</label> 
    <input type="text" id="amount" name="amount"> 
    <p> </p> 
    <label for="paydatetime">Payment date/time</label> 
    <input type="text" id="paydatetime" name="paydatetime"> 
    <p> </p> 
    <label for="empnin">Empnin</label> 
    <input type="text" id="empnin" name="empnin"> 
    <p> </p> 
    <label for="custid">Customer ID</label> 
    <input type="text" id="custid" name="custid"> 
    <p> </p> 
    <label for="pstatusid">Payment Status</label> 
    <input type="text" id="pstatusid" name="pstatusid"> 
    <p> </p> 
    <label for="ptid">Payment Type</label> 
    <input type="text" id="ptid" name="ptid"> 
    <p> </p> 
    <input type="submit" name="Submit" value="Add Rental"> 
    <br></br> 
    <a href="../views/MenuView.php">Menu Page</a> 
    <br></br> 
</form> 

+1

有一件事我一直做验证我的疑问是做'var_dump'或'$'lgi-实际的SQL和变量的echo'> insertRental',然后尝试手动phpMyAdmin来执行它。这将有助于你缩小,如果它在SQL语法错误或参数数量不匹配,等等。 – WOUNDEDStevenJones

+1

也有你试图插入一个机会了'datetime'成'timestamp'场。日期时间格式为'YYYY-MM-DD HH:ii:ss',而时间戳是一个整数(自UNIX时代以来的秒数)。有关更多信息,请参阅http://stackoverflow.com/questions/5362874/how-to-convert-timestamp-to-datetime-in-mysql。 – WOUNDEDStevenJones

+0

@WOUNDEDStevenJones说了些什么。回应发送到数据库的实际SQL,语法错误应该很明显。 – Goose

回答

0

你需要用你日期变量与撇号。

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

并确保格式正确:尝试$ paydatetime = date(“Y-m-d H:i:s”);