热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

我的$stmtInsert执行两次,mysqli只有一次相同的数据

如何解决《我的$stmtInsert执行两次,mysqli只有一次相同的数据》经验,为你挑选了1个好方法。

我有这两个功能.$ stmt查询在我的dbase中插入数据两次,即使使用检查例程也是如此.

一直试图抓住错误,但我找不到它.

常规的MySQLi例程以完全相同的方式调用,确实只插入一次数据.

我无法绕过原因.做了一些回声检查,echo'ed SQL insert etcetera.我只是不知道发生了什么.我还没有使用$ stmt,但是想要更好地利用程序员的生活.这没有帮助:-)

在XAMPP上运行测试:Apache/2.4.29(Win32)OpenSSL/1.1.0g PHP/7.2.1 Clientversie van数据库:libmysql - mysqlnd 5.0.12-dev - 20150407 PHP-versie:7.2.1

此代码插入两次:

$result = mysql_insert_array_serialised($conn, $dbt_serialsets, $_POST, $addon);


function mysql_insert_array_serialised($conn, $table, $data, $addon = "mc_api") {

        $random_code = substr(str_shuffle(MD5(microtime())), 0, 12);
        $settings    = serialize($data);
        $uid         = $_SESSION['uid'];

        $sql_chk = "SELECT sn FROM $table WHERE sn = ?";

        if ($stmt = $conn->prepare($sql_chk)) {
            $stmt->bind_param('s', $random_code);
            $stmt->execute();
            $stmt->store_result();

            if ($stmt->num_rows == 0) {
                // SN doesnt already exist
                $sql_insert = 'INSERT INTO ' . $table . ' (uid, addon, sn, settings) VALUES (?, ?, ?, ?)';
                if ($stmt       = $conn->prepare($sql_insert)) {
                    $stmt->bind_param('ssss', $uid, $addon, $random_code, $settings);
                    $stmt->execute();
                    if (!$stmt->execute()) {
                        echo $stmt->error;
                    }else{
                        return array(
                        "mysqli_error"         => false,
                        "sn"                   => $random_code
                        );  
                    }

                } else {
                    echo 'Could not prepare statement!';
                }
            }
        }
    }

虽然这个具有完全相同的数据,但应该完成工作.一个插页.

$result = mysql_insert_array($conn, $dbt_serialsets, $_POST, $addon);

function mysql_insert_array($conn, $table, $data, $addon) {

    $random_code = substr(str_shuffle(MD5(microtime())), 0, 12);
    $settings    = serialize($data);
    $uid         = $_SESSION['uid'];

    if ($conn->query("INSERT INTO $table (uid, addon, sn, settings) VALUES ('" . $uid . "', '" . $addon . "' , '" . $random_code . "', '" . $settings . "')")) {
        return array(
            "mysqli_error"         => false,
            "mysqli_insert_id"     => $conn->insert_id,
            "mysqli_affected_rows" => $conn->affected_rows,
            "mysqli_info"          => $conn->info,
            "sn"                   => $random_code
        );

    } else {
        return array("mysqli_error" => $conn->error);
    }
}   

我很困惑.关于类似问题的回复很少,有人说一旦上传到http服务器就解决了,我只在我的本地测试XAMPP上运行它

由于你们中的一些人认为双$ stmt->执行是问题,但事实并非如此.一个用于选择(检查exisitng),一个用于插入新数据.

原来的功能是这样的,改回来并仍然插入两次:

function mysql_insert_array_serialised_test($conn, $table, $data, $addon = "mc_api") {

    $random_code = substr(str_shuffle(MD5(microtime())), 0, 12);
    $settings    = serialize($data);
    $uid         = $_SESSION['uid'];

    $sql_insert = 'INSERT INTO ' . $table . ' (uid, addon, sn, settings) VALUES (?, ?, ?, ?)';
    if ($stmt       = $conn->prepare($sql_insert)) {
        $stmt->bind_param('ssss', $uid, $addon, $random_code, $settings);
        $stmt->execute();
        if (!$stmt->execute()) {
            echo $stmt->error;
        } else {
            return array(
                "mysqli_error" => false,
                "sn"           => $random_code
            );
        }
    } else {
        echo 'Could not prepare statement!';
    }        
}

显然,我读得不好.我很抱歉.帖子中提到的双重执行是存在的,删除1确实有帮助.我以为一个用于检查是否有有效结果,而不是实际再次执行查询.

去耻辱的角落*

Nick.. 5

你有两个调用$stmt->execute()这两个调用将执行INSERT:

                $stmt->execute();
                if (!$stmt->execute()) {

你可以删除第一个.



1> Nick..:

你有两个调用$stmt->execute()这两个调用将执行INSERT:

                $stmt->execute();
                if (!$stmt->execute()) {

你可以删除第一个.


推荐阅读
  • 本文是搭建的mariadb-10.0.17版本的下载地址:https:downloads.mariadb.orginterstitialmariadb-10.0.17sourcemariadb-10.0.17.tar.gzfromhtt ... [详细]
  • Python SQLAlchemy库的使用方法详解
    本文详细介绍了Python中使用SQLAlchemy库的方法。首先对SQLAlchemy进行了简介,包括其定义、适用的数据库类型等。然后讨论了SQLAlchemy提供的两种主要使用模式,即SQL表达式语言和ORM。针对不同的需求,给出了选择哪种模式的建议。最后,介绍了连接数据库的方法,包括创建SQLAlchemy引擎和执行SQL语句的接口。 ... [详细]
  • 如何在php中将mysql查询结果赋值给变量
    本文介绍了在php中将mysql查询结果赋值给变量的方法,包括从mysql表中查询count(学号)并赋值给一个变量,以及如何将sql中查询单条结果赋值给php页面的一个变量。同时还讨论了php调用mysql查询结果到变量的方法,并提供了示例代码。 ... [详细]
  • PDO MySQL
    PDOMySQL如果文章有成千上万篇,该怎样保存?数据保存有多种方式,比如单机文件、单机数据库(SQLite)、网络数据库(MySQL、MariaDB)等等。根据项目来选择,做We ... [详细]
  • centos 6.5 mysql 集群_CentOS 6下安装部署Galera Cluster for MySQL集群
    GaleraClusterforMySQL是一套基于同步复制的多主MySQL集群解决方案,使用简单,没有单点故障,可用性高, ... [详细]
  • Myfunctionlookslikethat.Itworksbutdoeslotsofwork(recursivelycallsitselfanddoeslots ... [详细]
  • 本文介绍了Redis的基础数据结构string的应用场景,并以面试的形式进行问答讲解,帮助读者更好地理解和应用Redis。同时,描述了一位面试者的心理状态和面试官的行为。 ... [详细]
  • Oracle Database 10g许可授予信息及高级功能详解
    本文介绍了Oracle Database 10g许可授予信息及其中的高级功能,包括数据库优化数据包、SQL访问指导、SQL优化指导、SQL优化集和重组对象。同时提供了详细说明,指导用户在Oracle Database 10g中如何使用这些功能。 ... [详细]
  • 如何用UE4制作2D游戏文档——计算篇
    篇首语:本文由编程笔记#小编为大家整理,主要介绍了如何用UE4制作2D游戏文档——计算篇相关的知识,希望对你有一定的参考价值。 ... [详细]
  • Spring特性实现接口多类的动态调用详解
    本文详细介绍了如何使用Spring特性实现接口多类的动态调用。通过对Spring IoC容器的基础类BeanFactory和ApplicationContext的介绍,以及getBeansOfType方法的应用,解决了在实际工作中遇到的接口及多个实现类的问题。同时,文章还提到了SPI使用的不便之处,并介绍了借助ApplicationContext实现需求的方法。阅读本文,你将了解到Spring特性的实现原理和实际应用方式。 ... [详细]
  • 本文介绍了高校天文共享平台的开发过程中的思考和规划。该平台旨在为高校学生提供天象预报、科普知识、观测活动、图片分享等功能。文章分析了项目的技术栈选择、网站前端布局、业务流程、数据库结构等方面,并总结了项目存在的问题,如前后端未分离、代码混乱等。作者表示希望通过记录和规划,能够理清思路,进一步完善该平台。 ... [详细]
  • MySQL8.0.24内网部署
    以CentOS-8-Runtime-x86_64.202109为例,其他也适用,何为“内网”,镜像都不给你挂载通用离线安装依赖lib库的套 ... [详细]
  • 为什么要研究TrinityCore?(1)它是一个完整成熟的可运行调试的网游服务器框架。(2)它是一个跨平台的标准C++编写的项目,在Windows、Linux、MacOSX上都可编译运行。(3) ... [详细]
  • followingproblem:Iwanttobuildamysqlbasedlanguagesystem.下面的问题:我想构建一个基于mysql的语言系统。Todec ... [详细]
  • $idmysqli_connect("localhost","root","root");数据库连接mysqli_select_db ... [详细]
author-avatar
络风落泪_411
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有