我有一个像这样的查询方法:
class classOne {
// Relevant variables
protected $db, $result;
public function query ($sql) {
$this->result = $this->db->query($sql);
// So, run mysql query provided by the argument
}
}
然后是这样的插入方法:
class classTwo extends classOne {
public function insertStuff ($id, $text) {
$this->query("INSERT INTO Tablename (id, text, time) VALUES ($id, $text, NOW())");
}
}
然后我实例化类$c = new classTwo;
并调用方法(两者都在不同的php文件中,但与类文件位于同一文件夹中)$c->insertStuff(1, "This is a test");
。
我没有错误,表没有任何字段,甚至没有空字段。但是直接使用该方法使用硬编码值,如:
public function insertStuff ($id, $text) {
$this->query("INSERT INTO Tablename (id, text, time) VALUES (1, "Some text", NOW())");
}
它会起作用。然后我尝试用参数逐个替换硬编码值以查看它何时停止工作,它接受NOW()
字段并成功插入新行,但是一旦我使用$text
引用在我的方法调用另一个文件,它停止,不添加任何东西。
所有必需的文件都是必需的,如果有些文件没有,则应该抛出错误。我很困惑。
答案 0 :(得分:1)
您需要在查询中添加'前后字符串
修复代码:
$this->query("INSERT INTO Tablename (id, text, time) VALUES ($id, '$text', NOW())");