在php中使用json_encode方法时,在数据库中重复条目插入

时间:2013-01-15 08:52:17

标签: 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 );
        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函数中,要么使用类对象调用外部。这就好像我的这些功能有误。但是我无法解决它,请帮我解决这个问题。

1 个答案:

答案 0 :(得分:0)

因为我正在运行ubuntu 11.10,并使用chrome进行浏览,其中严重错误。在这个问题花了几个小时之后,我发现在 chrome browser 中有一个争吵,当使用php的 json_encode 方法时会抛出另一个mysql插入查询,我也从中升级php包5.3.6至5.4但铬仍然存在问题。另一方面,其他浏览器chrome,mozilla firefox,safari行为正常,只插入一个带有json_encode函数的条目。此外还没有铬的动态更新,因此我们可以将它用于开发工作。