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);
});
}