您最好使用参数化查询,如下例所示:
<?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。https://www.owasp.org/index.php/SQL_Injection_Prevention_Cheat_Sheet了解更多关于 SQL 注入的信息。您还应该能够在 Stackoverflow 上找到一些关于 SQL 注入的优秀信息和问题。