0

私はこのphpコードを持っています。エラーはスローされませんが、データはテーブルに挿入されず、テーブルも作成されません。どこが間違っているのか教えてください。

事前に乾杯:)

DB_Functions.php

private $db;

     // constructor
     function __construct() {
         require_once 'DB_Connect.php';
         // connecting to database
         $this->db = new DB_Connect();
         $this->db->connect();
     }

// destructor
function __destruct() {

}

 public function storeUnit($email, $units, $maint, $attent, $done) {
    $con = mysql_connect(DB_HOST, DB_USER, DB_PASSWORD) or die (mysql_error());
    mysql_select_db(DB_DATABASE, $con);

        $format = 'Y-m-d G:i:s';
        $date = date($format);
        $result = mysql_query("CREATE TABLE IF NOT EXISTS $email( Units VARCHAR(10), Finish VARCHAR(20), Attent VARCHAR(200), Maint VARCHAR(200), created_at VARCHAR(30))",$con);
        $result = mysql_query("INSERT INTO '$email'(Units, Finish, Attent, Maint, created_at) VALUES('$units', '$done', '$attent', '$maint', '$date')");
        return true;
}
4

2 に答える 2

3

これは私の最初の投稿ですが、コードのアーキテクチャが悪いか、アプリケーションの OOP 設計が悪いと思いますが、問題は、間違った引用符を使用してテーブルを作成し、行を挿入していることです。これらの記号を使用して、名前「`」を引用する必要があります。次に例を示します。

CREATE TABLE `table name` ....
INSERT INTO `table name` ....

したがって、コードのセキュリティについて考える必要があると思います.mysql_real_escape_stringを使用してください

于 2012-10-19T09:33:27.907 に答える
2

テーブル名に ' の代わりに ' を使用してみてください

$result = mysql_query("INSERT INTO `$email`(Units, Finish, Attent, Maint, created_at) VALUES('$units', '$done', '$attent', '$maint', '$date')");

編集:データベースがInnoDBを使用しているかどうかを調べてみてください。トランザクションモードを使用できます...自動コミットが無効になっている場合は変更をコミットする必要があります

于 2012-10-19T09:20:52.677 に答える