php执行两次,记录两次

php执行两次,记录两次,php,pdo,Php,Pdo,关于这个脚本,我遇到了一个问题 <?php error_reporting(E_ALL); ini_set('display_errors', 1); header('Content-type: application/json'); header('Access-Control-Allow-Origin: *'); require_once("./dbconf.php"); $esmaior = new ESMAIOR($DB_con); session_start(); $aulaAs

关于这个脚本,我遇到了一个问题

<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
header('Content-type: application/json');
header('Access-Control-Allow-Origin: *');
require_once("./dbconf.php");
$esmaior = new ESMAIOR($DB_con);
session_start();
$aulaAssist = 'teste';
if($aulaAssist != null){
    $idProfessorA = 23;
    $idProfessorB = 24;
    $dataA = '2017-10-01';
    $dataB = '2017-10-01';
    $discA = 23;
    $discB =24;
    $anoA = '1º';
    $anoB =  '1º';
    $ret = $esmaior->newAulaAssistida($idProfessorA, $idProfessorB, $dataA, $dataB, $discA, $discB, $anoA, $anoB);
    echo json_encode($ret);
}
所以,当我检查我的数据库时,我总是在同一个日期和时间对同一个项目进行两次检查。 我使用过Firefox、Chrome、IE、Edge,它们都有相同的行为。 有人能帮我解决这个问题吗


谢谢

我从来没有实际执行过
查询
d和
执行
d,但这两个函数都执行一个查询,所以您应该只使用其中一个。
execute
用于准备好的语句。所以你可以做:

$stmt = $this->db->prepare("INSERT INTO aulasassistidas (dataRegistado) VALUE (NOW());");
$result= $stmt->execute();
或者只是:

$result = $this->db->query("INSERT INTO aulasassistidas (dataRegistado) VALUE (NOW());");
if (!$result) {

当您遇到服务器端问题时,尝试不同的浏览器是没有用的,但是您提到的事实让我想知道:您确定AJAX查询不会被调用两次吗?观察Chrome inspector中的“网络”选项卡,查看浏览器调用HTTP请求进行脚本编辑的次数:@chris85是正确的,如果之后要调用
execute
,请不要使用
query
。使用
prepare()
然后使用
execute()
query()
单独使用
Error')
,您会发现此处缺少一个引号,并且正在取消语法突出显示。如果有报价,请编辑您的帖子。关于
VALUE
的旁注。对于那些认为这是无效的并且应该读作
值的人来说,这两种方法在MySQL中都是有效的。所以你可以这样做:“-他们仍然需要执行它;您的意思可能是
$stmt=$this->db->query(
并删除
execute()
)。另外,“execute用于准备好的语句。”奇怪的是,即使没有占位符,您仍然可以使用它。@Fred ii-他们有
execute()
已经在他们的代码中了。我的答案应该读为使用
准备
代替
查询
或删除
执行
调用。是的,我知道。我不确定是否看到了我的原始评论或编辑过,因为我编辑过一次。顺便说一句,他们那里缺少一个引号。我甚至不确定他们是否在附近,或者哈我看到你的答案了。可能只是一个不好的粘贴。是的,那好多了。克里斯:-)
$result = $this->db->query("INSERT INTO aulasassistidas (dataRegistado) VALUE (NOW());");
if (!$result) {