我有这个问题:
mysql_query("INSERT INTO `63_Activity` (`username`, `time`) VALUES (`$usernann2`, `$date`)");
然而,它没有做任何事情。即使我尝试将变量更正为
". $variable ."
我检查了变量。
我从它工作的某个地方复制了一小段代码。
数据库和表格已存在。
我以为我控制了事情,然后发生了 - .-
提前谢谢。
PS:我尝试添加或死() - 但没有错误。什么都没有。
答案 0 :(得分:1)
值必须是单引号('
),而不是反引号(`)
mysql_query("INSERT INTO `63_Activity` (`username`, `time`) VALUES ('$usernann2', '$date')");
您还应该确保清理输入,最好不要使用mysql_
函数代替mysqli_
答案 1 :(得分:0)
尝试将查询放入变量并回显它,看看是否有什么问题,尝试在php上运行它我的管理员也
答案 2 :(得分:0)
最好使用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注入的一些优秀信息和问题。