Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/php/274.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在php中使用json_编码方法时在数据库中插入重复项_Php_Mysqli_Prepared Statement_Json - Fatal编程技术网

在php中使用json_编码方法时在数据库中插入重复项

在php中使用json_编码方法时在数据库中插入重复项,php,mysqli,prepared-statement,json,Php,Mysqli,Prepared Statement,Json,我在php mysql中遇到问题,在调用json_encode方法后,在数据库中得到类似的条目。这是我的php代码: class xyz { private $_mysqli; public function __construct( $hostname, $user, $password, $database ) { $this->_mysqli = new mysqli( $hostname, $user, $password, $database

我在php mysql中遇到问题,在调用json_encode方法后,在数据库中得到类似的条目。这是我的php代码:

class xyz
{

    private $_mysqli;

    public function __construct( $hostname, $user, $password, $database ) {

        $this->_mysqli = new mysqli( $hostname, $user, $password, $database );
        if (  mysqli_connect_errno() ) {

            die('couldn\'t connect connection ('. mysqli_connect_errno(). ')'. mysqli_connect_error() );
        }

        return $this->_mysqli;

    }


    public function insert( $user, $app ) {

        if ($stmt = $this->_mysqli->prepare("INSERT INTO `track` ( user, app ) VALUES (?, ?)")) {

            $stmt->bind_param( 'ss', $user, $app );

            $stmt->execute();

            $stmt->close();

        } else {

            printf( "Prepared Statement Error: %s\n", $this->_mysqli->error );
        }
    }

    public function __destruct() {

        return $this->_mysqli->close();

    }


    public function app( $params = array(), $index = NULL ) {

        //get ads from array based on scheduling

        if (is_null( $index )) {

            return $params;

        } else {

            //$this->insert( $user, $ap );

            echo json_encode(array('delay' => '43200000', 'success' => 'true', 'result' => json_encode($params[$index]) ));


        }
    }

}

error_reporting( E_ALL );
ini_set( "display_errors", 1 );

$user = $_REQUEST['user'];
$app = $_REQUEST['app'];

require 'config.inc.php'; //file contain db credentials and array named $params

$res = new xyz( 'localhost', 'root' , '#####' ,'user_db' );

$res->insert( $user, $app );
$res->app($params, 1);

如果我调用
$res->insert_query($imei,$pn)
$res->app($params,1)
,它会在浏览器上显示一次json,但在数据库中插入两次条目。在这两种情况下都会发生这种情况,我可以将插入函数放在app函数中,也可以使用类对象在外部调用。就好像我在这些函数中犯了一个错误。但是我不能解决这个问题,请帮我解决这个问题。

因为我运行的是ubuntu 11.10,并且使用chromium来浏览有严重bug的浏览器。在花了几个小时解决这个问题后,我发现chromium browser中有一个冲突,当使用php的json_encode方法时,它抛出了另一个mysql插入查询,我也将php包从5.3.6升级到5.4,但chromium仍然存在问题。另一方面,其他浏览器chrome、mozilla firefox、safari表现正常,只插入一个带有json_编码功能的条目。此外,chromium没有动态更新,因此我们将其用于开发工作是可悲的。

我只看到类中的
insert
方法,而不是
insert\u query
您的insert\u query方法在哪里?@HankyPankyㇱ : 我为我的打字错误道歉,这里有insert方法而不是insert\u query。你不是把代码切得太多,就是选错了部分。从您发布的内容来看,
function app()
与数据库操作无关;它甚至没有使用任何与该对象相关联的资源。@Passerby:正如您所见,我先调用了insert函数,然后调用了app函数,它会回显一个json编码的数组,如果我在app函数中放入一个简单的回显,然后只插入一次,但当使用json编码时,数据库中的条目会被扭曲