我有这个查询:
mysql_query("INSERT INTO `63_Activity` (`username`, `time`) VALUES (`$usernann2`, `$date`)");
然而,它没有任何作用。甚至当我尝试将变量更正为时
". $variable ."
我检查了变量。
我从它工作的地方复制了这一小段代码。
数据库和表已存在。
我只是觉得事情已经控制住了,然后事情就发生了
提前谢谢。
PS:我试着添加或die(),但没有错误。没有什么
值需要使用单引号('
),而不是反引号(`)
mysql_query("INSERT INTO `63_Activity` (`username`, `time`) VALUES ('$usernann2', '$date')");
您还应该确保您正在清理输入,并且最好不要使用mysql_
函数来代替mysqli_
您最好使用参数化查询,如下例所示:
<?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注入的详细信息。您还应该能够在这里找到一些关于SQL注入的Stackoverflow的优秀信息和问题。
尝试将查询放在一个变量中并回显它,看看是否有任何错误,尝试在php上运行它my-admin也