Php 为什么这个SQL要处理两次?
基本上,出于某种原因,我的插入查询SQL要处理两次,我不知道为什么 这是我的表格:Php 为什么这个SQL要处理两次?,php,mysql,Php,Mysql,基本上,出于某种原因,我的插入查询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="pass
<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>
然后是$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;
}
您的代码看起来不错,而且插入似乎不可能发生两次。您可以安装Firefox的Firebug,然后右键单击表单->“Inspect元素”。转到“网络”,看看表单发布了什么,以及它是否只发布了一次? 可能有Javascript试图再次提交表单
如果一切看起来都很好,那么应该查看DB Insert函数:您的代码看起来很好,而且插入似乎不会发生两次。您可以安装Firefox的Firebug,然后右键单击表单->“Inspect元素”。转到“网络”,看看表单发布了什么,以及它是否只发布了一次? 可能有Javascript试图再次提交表单
如果一切正常,则应查看DB Insert函数:可能您的浏览器发送了两个请求,使用TamperData插件嗅探到Firefox或类似的内容,您也可以检查服务器上的访问日志。您单击“代码> AddioActudio一次,但它添加相同的帐户两次?只是一个提示,不要考虑使用<代码> MySqL**/CODE >,并转换为将来PHP版本的更受支持的选项。例如
mysqli.*
或pdo
addecho$sqlQuery
到运行sql
,查看它是否打印多个sql语句或使用错误日志(“写入数据库”);可能你的浏览器会发送两个请求,用TamperData插件嗅探到Firefox或类似的东西,您也可以检查服务器上的访问日志。您单击“代码> AddioActudio一次,但它添加相同的帐户两次?只是一个提示,不要考虑使用<代码> MySqL**/CODE >,并转换为将来PHP版本的更受支持的选项。例如mysqli.*
或pdo
addecho$sqlQuery
到运行sql
,查看它是否打印多个sql语句或使用错误日志(“写入数据库”);
public function runSQL($sqlQuery,$possibleError = 0) {
if($sqlQuery=="") {return false;}
mysql_query($sqlQuery);
if(mysql_error()){
return false;
}
return true;
}