ConnectionTest::testPrepared PHP Method

testPrepared() public method

public testPrepared ( )
    function testPrepared()
    {
        \Amp\reactor(\Amp\driver());
        \Amp\run(function () {
            $db = new Connection("host=" . DB_HOST . ";user=" . DB_USER . ";pass=" . DB_PASS . ";db=connectiontest");
            $db->connect();
            $db->query("CREATE TEMPORARY TABLE tmp SELECT 1 AS a, 2 AS b");
            $db->query("INSERT INTO tmp VALUES (5, 6), (8, 9), (10, 11), (12, 13)");
            $stmt = (yield $db->prepare("SELECT * FROM tmp WHERE a = ? OR b = :num"));
            $base = ["catalog" => "def", "schema" => "connectiontest", "table" => "tmp", "original_table" => "tmp", "charset" => 63, "columnlen" => 1, "type" => 3, "flags" => 1, "decimals" => 0];
            $this->assertEquals((yield $stmt->getFields()), [$base + ["name" => "a", "original_name" => "a"], $base + ["name" => "b", "original_name" => "b"]]);
            $result = (yield $stmt->execute([5, "num" => 9]));
            $this->assertEquals((yield $result->rowCount()), 2);
            $result = (yield $db->prepare("SELECT * FROM tmp WHERE a = ? OR b = ?", [5, 8]));
            $this->assertEquals((yield $result->rowCount()), 1);
            $result = (yield $db->prepare("SELECT * FROM tmp WHERE a = :a OR b = ? OR a = :a", ["a" => [5, 10], 9]));
            $this->assertEquals((yield $result->rowCount()), 3);
            $stmt = (yield $db->prepare("INSERT INTO tmp VALUES (:foo, :bar)"));
            $stmt->bind("foo", 5);
            $result = (yield $stmt->execute(["bar" => 9]));
            $this->assertEquals($result->affectedRows, 1);
        });
    }