我有这个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;
}
答案 0 :(得分:3)
这是我的第一篇文章,但我认为您的应用程序的代码架构不好或OOP设计不好,但问题是您使用错误的引号来创建表和插入行。 您需要使用这些符号来引用名称“`”,例如:
CREATE TABLE `table name` ....
INSERT INTO `table name` ....
所以我认为你必须考虑你的代码安全性,使用mysql_real_escape_string
答案 1 :(得分:2)
尝试使用`而不是'作为tablename
$result = mysql_query("INSERT INTO `$email`(Units, Finish, Attent, Maint, created_at) VALUES('$units', '$done', '$attent', '$maint', '$date')");
编辑:尝试查看您的数据库是否使用InnoDB,您可以使用事务模式...因此如果禁用自动提交,您必须提交更改