php - 为什么这条SQL处理了两次?

标签 php mysql

基本上,出于某种原因,我的 INSERT 查询的 SQL 处理了两次,我不确定为什么。

这是我的表格:

<form class="form-horizontal" method="POST" action="">
    <input id="email" name="email" class="text-style" type="email">
    <input id="password" name="password" class="text-style" type="password">
    <input id="secret" name="secret" class="text-style" type="text">
    <select class="text-style" id="console" name="console">
        <option value="XBOX">Xbox 360</option>
        <option value="PS3">PS3</option>
    </select>
    <select class="text-style" id="status" name="status">
        <option value="0">Disabled</option>
        <option value="1">Enabled</option>
    </select>
    <button class="btn btn-success pull-right" name="add_account">Add Account</button>
</form>

这是我的 PHP 来处理表单:

if(isset($_POST['add_account'])) {
    $data = array(
        'email' => base64_encode($_POST['email']),
        'password' => base64_encode($_POST['password']),
        'secret' => base64_encode($_POST['secret']),
        'console' => $_POST['console'],
        'status' => $_POST['status'],
        'date_added' => date("y-m-d h:i:s"),
        'last_check' => date("y-m-d h:i:s")
    );
    $result = $DB->insert('accounts',$data);
    if($result) {
        if(!in_array("Account added successfully.", $msgs))
            array_push($msgs,"Account added successfully.");
    } else {
        array_push($msgs,"^Failed to add account.");
    }
}

然后是$DB->insert函数

public function insert($table=null,$array_of_values=array()) {
    if ($table===null || empty($array_of_values) || !is_array($array_of_values)) return false;
    $fields=array(); $values=array();
    foreach ($array_of_values as $id => $value) {
        $fields[]=$id;
        if (is_array($value) && !empty($value[0])) $values[]=$value[0];
        else $values[]="'".mysql_real_escape_string($value,$this->connection)."'";
    }
    $s = "INSERT INTO $table (".implode(',',$fields).') VALUES ('.implode(',',$values).')';
    if ($this->runSQL($s)) return true;
    return false;
}

这是 runSQL 函数:

public function runSQL($sqlQuery,$possibleError = 0) {
    if($sqlQuery=="") {return false;}
    mysql_query($sqlQuery);
    if(mysql_error()){  
        return false;
    }
    return true;
}

最佳答案

您的代码看起来不错,而且似乎没有机会插入两次。能否安装Firebug for Firefox,右键单击窗体->“Inspect element”。转到“网络”并查看表单发布的内容,以及它是否只发布一次? 也许有一些 Javascript 试图再次提交表单?

如果一切正常,应该查看您的 DB Insert 函数:

关于php - 为什么这条SQL处理了两次?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18115213/

相关文章:

php - cms 的最佳数据库概念

php - Mysql连接类

java - Spring boot jpa/hibernate 遇到列类型错误(json字段)

php - 格式化关联数组声明

php - 安装 mysqlnd 会破坏使用 mysql 的 PHP 中的现有代码吗?

MySQL - 为什么 "greater than"的 COUNT 很快但 "less than"需要永远?

mysql - 来自 MYSQL 数据库的 MS Access 报告

php - 有没有办法在没有 WHERE 子句的情况下加快此查询的速度?

mysql - 如何合并不同ID的sql表

PHPBrew 使用变体更新现有安装?