1
我有一個查詢方法是這樣的:不知道爲什麼插入數據庫不起作用?
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");
。
我沒有得到erros,表沒有得到任何字段,甚至沒有空的。但是直接使用方法與硬編碼值,如:
public function insertStuff ($id, $text) {
$this->query("INSERT INTO Tablename (id, text, time) VALUES (1, "Some text", NOW())");
}
它將工作。然後我嘗試用參數替換硬編碼值1以查看它何時停止工作,它接受NOW()
字段併成功插入一個新行,但只要我在其他文件中使用$text
引用了我的方法調用,它停止,不會添加任何東西。
所有必需的文件都是必需的,如果有的話,它會引發錯誤。我很困惑。
這是沒有意義的使用PDO /庫MySQLi,如果你不採取利用預準備語句(這也是爲什麼你的代碼失敗了,你忘記了''''準備語句會照顧你的東西(*和*他們會讓你的代碼免於SQL注入!)) – h2ooooooo 2013-03-10 14:28:33
因爲你的變量'$ text'不包含周圍的引號。它必須在查詢中被引用爲'($ id'$ text',NOW())'_它已被正確地轉義出來了!_ – 2013-03-10 14:28:37
提醒:當某些東西不起作用時,*首先*啓用錯誤報告,詢問數據庫API相同。 – mario 2013-03-10 14:34:05