0

我有这个查询:

mysql_query("INSERT INTO `63_Activity` (`username`, `time`) VALUES (`$usernann2`, `$date`)");

但是,它什么也没做。即使我尝试将变量更正为

". $variable ." 

我检查了变量。

我从它工作的地方复制了一小行代码。

数据库和表已存在。

我只是以为我已经控制住了事情,然后就发生了-.-

先感谢您。

PS:我尝试添加或 die() - 但没有错误。没有什么。

4

3 回答 3

1

值需要用单引号 ( '),而不是反引号 (`)

mysql_query("INSERT INTO `63_Activity` (`username`, `time`) VALUES ('$usernann2', '$date')");

你还应该确保你正在清理你的输入,并且最好不要使用mysql_函数来代替mysqli_

于 2012-07-29T21:00:25.257 回答
0

尝试将查询放在变量中并回显它,看看是否有任何问题,尝试在我的管理员的 php 上运行它

于 2012-07-29T21:02:54.013 回答
0

您最好使用参数化查询,如下例所示:

 <?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 注入的优秀信息和问题。

于 2012-07-29T21:33:44.190 回答