你會過得更好使用Paramaterized查詢,在後續例如:
<?php
try {
$usernann2 = "whateverUsernameFits";
$date = new DateTime('2000-01-01');
$stmt = $this->db->prepare ("INSERT INTO 63_Activity (username, time) VALUES (:usernann2, :date)");
$stmt->bindParam (':usernann2', $usernann2);
$stmt->bindParam (':date', $date);
$stmt->execute();
}catch (PDOException $e)
{
throw new Exception ($this->db->errorInfo() . 'Problem inserting object ');
} catch (Exception $e) {
throw new \Exception ('Problem inserting object ');
}
?>
綁定參數是防止SQL注入攻擊的主要手段。拋出的異常會給你一個線索,看看你的查詢中是否有問題。我通常首先檢查查詢以確保它與真實值一起工作。從那裏它是一個消除的過程。
PS。有關SQL注入的更多信息,請參閱https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet。您還應該能夠在Stackoverflow上找到關於SQL注入的一些優秀信息和問題。
請您查詢後調用mysql_error。希望輸出顯示問題的原因。更多信息http://php.net/manual/en/function.mysql-error.php – mrok 2012-07-29 20:59:28
你使用周圍文本值反引號,我敢肯定你會想單引號那裏。 – fvu 2012-07-29 21:00:11
另外,在PHP mysql_ *功能** **棄用,這意味着它們會消失一些日子在不久的將來。 php團隊不鼓勵他們在新代碼中的使用。切換到PDO並準備好語句,因爲您正在做的事情使您容易受到SQL注入攻擊。 – fvu 2012-07-29 21:02:35