Find this useful? Enter your email to receive occasional updates for securing PHP code.

Signing you up...

Thank you for signing up!

PHP Decode

--TEST-- PDO Basics --SKIPIF-- <?php require_once('skipif.inc'); require_once("connect.inc..

Decoded Output download

--TEST--
PDO Basics
--SKIPIF--
<?php
require_once('skipif.inc');
require_once("connect.inc");

_skipif_check_extensions(array("pdo_mysql"));
_skipif_connect($master_host_only, $user, $passwd, $db, $master_port, $master_socket);
_skipif_connect($slave_host_only, $user, $passwd, $db, $slave_port, $slave_socket);

$settings = array(
	"myapp" => array(
		'master' => array($master_host),
		'slave' => array($slave_host),
	),
);
if ($error = mst_create_config("test_mysqlnd_ms_pdo_basics.ini", $settings))
	die(sprintf("SKIP %s
", $error));

?>
--INI--
mysqlnd_ms.enable=1
mysqlnd_ms.config_file=test_mysqlnd_ms_pdo_basics.ini
--FILE--
<?php
	require_once("connect.inc");
	require_once("util.inc");

	function test_pdo($host, $user, $passwd, $db, $port, $socket, $options) {

		try {

			/* PDO::query() */
			$pdo = $pdo = my_pdo_connect($host, $user, $passwd, $db, $port, $socket, $options);
			$stmt = $pdo->query("SELECT 1 AS _one");
			$result_slave = $stmt->fetchAll(PDO::FETCH_ASSOC);
			var_dump($result_slave);

			$stmt = $pdo->query(sprintf("/*%s*/SELECT 1 AS _one", MYSQLND_MS_MASTER_SWITCH));
			$result_master = $stmt->fetchAll(PDO::FETCH_ASSOC);
			if ($result_master != $result_slave) {
				printf("[001] Master and slave data differ, dumping
");
				var_dump($result_master);
				var_dump($result_slave);
			}

			/* PDO::exec() */
			$pdo = $pdo = my_pdo_connect($host, $user, $passwd, $db, $port, $socket, $options);
			$pdo->exec(sprintf("/*%s*/SET @myrole='master'", MYSQLND_MS_MASTER_SWITCH));
			$pdo->exec(sprintf("/*%s*/SET @myrole='slave'", MYSQLND_MS_SLAVE_SWITCH));

			/* PDO::prepare() */
			$stmt = $pdo->prepare("SELECT @myrole AS _role, ?");
			$stmt->execute(array("poor guy"));
			$result = $stmt->fetch(PDO::FETCH_ASSOC);
			var_dump($result);

			$stmt = $pdo->prepare(sprintf("/*%s*/SELECT @myrole AS _role, ?", MYSQLND_MS_MASTER_SWITCH));
			$stmt->execute(array("not so poor guy"));
			$result = $stmt->fetch(PDO::FETCH_ASSOC);
			var_dump($result);

			$stmt = $pdo->prepare(sprintf("/*%s*/SELECT @myrole AS _role, ?", MYSQLND_MS_LAST_USED_SWITCH));
			$stmt->execute(array("rich guy"));
			$result = $stmt->fetch(PDO::FETCH_ASSOC);
			var_dump($result);

			$pdo->exec(sprintf("DROP TABLE IF EXISTS test"));
			$pdo->exec(sprintf("CREATE TABLE test(id INT)"));
			var_dump($pdo->exec(sprintf("INSERT INTO test(id) VALUES (1)")));
			var_dump($pdo->query(sprintf("/*%s*/SELECT * FROM test", MYSQLND_MS_MASTER_SWITCH))->fetch(PDO::FETCH_ASSOC));
			var_dump($pdo->exec(sprintf("DROP TABLE IF EXISTS test")));

		} catch (Exception $e) {
			printf("[001] %s
", $e->__toString());
		}

	}

	/* $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", PDO::ATTR_EMULATE_PREPARES => true); */

	$options = array(PDO::ATTR_EMULATE_PREPARES => true);
	test_pdo("myapp", $user, $passwd, $db, $port, $socket, $options);
	$options = array(PDO::ATTR_EMULATE_PREPARES => false);
	test_pdo("myapp", $user, $passwd, $db, $port, $socket, $options);

	print "done!";
?>
--CLEAN--
<?php
	if (!unlink("test_mysqlnd_ms_pdo_basics.ini"))
	  printf("[clean] Cannot unlink ini file 'test_mysqlnd_ms_pdo_basics.ini'.
");
?>
--EXPECTF--
array(1) {
  [0]=>
  array(1) {
    ["_one"]=>
    string(1) "1"
  }
}
array(2) {
  ["_role"]=>
  string(5) "slave"
  ["poor guy"]=>
  string(8) "poor guy"
}
array(2) {
  ["_role"]=>
  string(6) "master"
  ["not so poor guy"]=>
  string(15) "not so poor guy"
}
array(2) {
  ["_role"]=>
  string(6) "master"
  ["rich guy"]=>
  string(8) "rich guy"
}
int(1)
array(1) {
  ["id"]=>
  string(1) "1"
}
int(0)
array(1) {
  [0]=>
  array(1) {
    ["_one"]=>
    %s1%s
  }
}
array(2) {
  ["_role"]=>
  string(5) "slave"
  ["?"]=>
  string(8) "poor guy"
}
array(2) {
  ["_role"]=>
  string(6) "master"
  ["?"]=>
  string(15) "not so poor guy"
}
array(2) {
  ["_role"]=>
  string(6) "master"
  ["?"]=>
  string(8) "rich guy"
}
int(1)
array(1) {
  ["id"]=>
  int(1)
}
int(0)
done!

Did this file decode correctly?

Original Code

--TEST--
PDO Basics
--SKIPIF--
<?php
require_once('skipif.inc');
require_once("connect.inc");

_skipif_check_extensions(array("pdo_mysql"));
_skipif_connect($master_host_only, $user, $passwd, $db, $master_port, $master_socket);
_skipif_connect($slave_host_only, $user, $passwd, $db, $slave_port, $slave_socket);

$settings = array(
	"myapp" => array(
		'master' => array($master_host),
		'slave' => array($slave_host),
	),
);
if ($error = mst_create_config("test_mysqlnd_ms_pdo_basics.ini", $settings))
	die(sprintf("SKIP %s\n", $error));

?>
--INI--
mysqlnd_ms.enable=1
mysqlnd_ms.config_file=test_mysqlnd_ms_pdo_basics.ini
--FILE--
<?php
	require_once("connect.inc");
	require_once("util.inc");

	function test_pdo($host, $user, $passwd, $db, $port, $socket, $options) {

		try {

			/* PDO::query() */
			$pdo = $pdo = my_pdo_connect($host, $user, $passwd, $db, $port, $socket, $options);
			$stmt = $pdo->query("SELECT 1 AS _one");
			$result_slave = $stmt->fetchAll(PDO::FETCH_ASSOC);
			var_dump($result_slave);

			$stmt = $pdo->query(sprintf("/*%s*/SELECT 1 AS _one", MYSQLND_MS_MASTER_SWITCH));
			$result_master = $stmt->fetchAll(PDO::FETCH_ASSOC);
			if ($result_master != $result_slave) {
				printf("[001] Master and slave data differ, dumping\n");
				var_dump($result_master);
				var_dump($result_slave);
			}

			/* PDO::exec() */
			$pdo = $pdo = my_pdo_connect($host, $user, $passwd, $db, $port, $socket, $options);
			$pdo->exec(sprintf("/*%s*/SET @myrole='master'", MYSQLND_MS_MASTER_SWITCH));
			$pdo->exec(sprintf("/*%s*/SET @myrole='slave'", MYSQLND_MS_SLAVE_SWITCH));

			/* PDO::prepare() */
			$stmt = $pdo->prepare("SELECT @myrole AS _role, ?");
			$stmt->execute(array("poor guy"));
			$result = $stmt->fetch(PDO::FETCH_ASSOC);
			var_dump($result);

			$stmt = $pdo->prepare(sprintf("/*%s*/SELECT @myrole AS _role, ?", MYSQLND_MS_MASTER_SWITCH));
			$stmt->execute(array("not so poor guy"));
			$result = $stmt->fetch(PDO::FETCH_ASSOC);
			var_dump($result);

			$stmt = $pdo->prepare(sprintf("/*%s*/SELECT @myrole AS _role, ?", MYSQLND_MS_LAST_USED_SWITCH));
			$stmt->execute(array("rich guy"));
			$result = $stmt->fetch(PDO::FETCH_ASSOC);
			var_dump($result);

			$pdo->exec(sprintf("DROP TABLE IF EXISTS test"));
			$pdo->exec(sprintf("CREATE TABLE test(id INT)"));
			var_dump($pdo->exec(sprintf("INSERT INTO test(id) VALUES (1)")));
			var_dump($pdo->query(sprintf("/*%s*/SELECT * FROM test", MYSQLND_MS_MASTER_SWITCH))->fetch(PDO::FETCH_ASSOC));
			var_dump($pdo->exec(sprintf("DROP TABLE IF EXISTS test")));

		} catch (Exception $e) {
			printf("[001] %s\n", $e->__toString());
		}

	}

	/* $options = array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8", PDO::ATTR_EMULATE_PREPARES => true); */

	$options = array(PDO::ATTR_EMULATE_PREPARES => true);
	test_pdo("myapp", $user, $passwd, $db, $port, $socket, $options);
	$options = array(PDO::ATTR_EMULATE_PREPARES => false);
	test_pdo("myapp", $user, $passwd, $db, $port, $socket, $options);

	print "done!";
?>
--CLEAN--
<?php
	if (!unlink("test_mysqlnd_ms_pdo_basics.ini"))
	  printf("[clean] Cannot unlink ini file 'test_mysqlnd_ms_pdo_basics.ini'.\n");
?>
--EXPECTF--
array(1) {
  [0]=>
  array(1) {
    ["_one"]=>
    string(1) "1"
  }
}
array(2) {
  ["_role"]=>
  string(5) "slave"
  ["poor guy"]=>
  string(8) "poor guy"
}
array(2) {
  ["_role"]=>
  string(6) "master"
  ["not so poor guy"]=>
  string(15) "not so poor guy"
}
array(2) {
  ["_role"]=>
  string(6) "master"
  ["rich guy"]=>
  string(8) "rich guy"
}
int(1)
array(1) {
  ["id"]=>
  string(1) "1"
}
int(0)
array(1) {
  [0]=>
  array(1) {
    ["_one"]=>
    %s1%s
  }
}
array(2) {
  ["_role"]=>
  string(5) "slave"
  ["?"]=>
  string(8) "poor guy"
}
array(2) {
  ["_role"]=>
  string(6) "master"
  ["?"]=>
  string(15) "not so poor guy"
}
array(2) {
  ["_role"]=>
  string(6) "master"
  ["?"]=>
  string(8) "rich guy"
}
int(1)
array(1) {
  ["id"]=>
  int(1)
}
int(0)
done!

Function Calls

None

Variables

None

Stats

MD5 9b3d10ee194c2a5377f6ceb9fd8c2518
Eval Count 0
Decode Time 108 ms