私はphpを使ってプロジェクトを進めていますが、いくつかのデータをMySQLデータベースに挿入しようとしています。コードをオンラインで実行し、データをデータベースに挿入しようとすると、致命的なエラーが発生します。エラーメッセージから、データベースがタイムスタンプを使用しているという事実と関係していると思います。現在の日付と時刻を挿入するためにNOW()を使用しようとしましたが、動作しませんでした。誰かが正しい方向に私を指すことができれば、それは非常に高く評価されるだろう。いくつかのデータをMySQLデータベースに挿入しようとしています
これは、エラーメッセージ
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);
}
}
?>
を更新しました210
<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>
私はいつもクエリを検証するために、実際のSQLと変数の 'var_dump'や' echo'を '$ lgi-> insertRental'で行い、それを手動でphpMyAdminで実行しようとします。これは、SQLやパラメータの数の不一致などで構文エラーが発生した場合に役立ちます。 – WOUNDEDStevenJones
また、 'datetime'を' timestamp'フィールドに挿入しようとしている可能性があります。日時は、 'YYYY-MM-DD HH:ii:ss'の形式と整数(タイムゾーンはUnixエポックからの秒数)です。詳細については、http://stackoverflow.com/questions/5362874/how-to-convert-timestamp-to-datetime-in-mysqlを参照してください。 – WOUNDEDStevenJones
@WOUNDEDStevenJonesが言ったこと。実際のSQLをデータベースに送信し、構文エラーが明白であるようにしてください。 – Goose