Skip to content

Commit 5d7c584

Browse files
authored
Merge pull request #6 from M1ke/master
Add Exec and Query methods to FakePDO
2 parents 7f247b2 + 0c3db93 commit 5d7c584

File tree

3 files changed

+90
-14
lines changed

3 files changed

+90
-14
lines changed

.gitignore

+3
Original file line numberDiff line numberDiff line change
@@ -5,3 +5,6 @@ www.pid
55
*~
66
composer.lock
77
.vscode
8+
/.idea
9+
composer.phar
10+
.phpunit.result.cache

src/Php7/FakePdo.php

+44-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,53 @@
11
<?php
22
namespace Vimeo\MysqlEngine\Php7;
33

4-
class FakePdo extends \PDO implements \Vimeo\MysqlEngine\FakePdoInterface
4+
use PDO;
5+
use Vimeo\MysqlEngine\FakePdoInterface;
6+
use Vimeo\MysqlEngine\FakePdoTrait;
7+
8+
class FakePdo extends PDO implements FakePdoInterface
59
{
6-
use \Vimeo\MysqlEngine\FakePdoTrait;
10+
use FakePdoTrait;
711

8-
/**
9-
* @param string $statement
10-
* @param ?array $options
11-
*/
12-
public function prepare($statement, $options = null)
12+
/**
13+
* @param string $statement
14+
* @param array $options
15+
* @return FakePdoStatement
16+
*/
17+
public function prepare($statement, array $options = [])
1318
{
1419
return new FakePdoStatement($this, $statement, $this->real);
1520
}
21+
22+
/**
23+
* @param string $statement
24+
* @return int|false
25+
*/
26+
public function exec($statement)
27+
{
28+
$statement = trim($statement);
29+
if (strpos($statement, 'SET ')===0){
30+
return false;
31+
}
32+
33+
$sth = $this->prepare($statement);
34+
if ($sth->execute()){
35+
return $sth->rowCount();
36+
}
37+
return false;
38+
}
39+
40+
/**
41+
* @param string $statement
42+
* @param int $mode
43+
* @param null $arg3
44+
* @param array $ctorargs
45+
* @return FakePdoStatement
46+
*/
47+
public function query($statement, $mode = PDO::ATTR_DEFAULT_FETCH_MODE, $arg3 = null, array $ctorargs = [])
48+
{
49+
$sth = $this->prepare($statement);
50+
$sth->execute();
51+
return $sth;
52+
}
1653
}

src/Php8/FakePdo.php

+43-7
Original file line numberDiff line numberDiff line change
@@ -1,16 +1,52 @@
11
<?php
22
namespace Vimeo\MysqlEngine\Php8;
33

4-
class FakePdo extends \PDO implements \Vimeo\MysqlEngine\FakePdoInterface
4+
use PDO;
5+
use Vimeo\MysqlEngine\FakePdoInterface;
6+
use Vimeo\MysqlEngine\FakePdoTrait;
7+
8+
class FakePdo extends \PDO implements FakePdoInterface
59
{
6-
use \Vimeo\MysqlEngine\FakePdoTrait;
10+
use FakePdoTrait;
711

8-
/**
9-
* @param string $statement
10-
* @param ?array $options
11-
*/
12-
public function prepare($statement, $options = null)
12+
/**
13+
* @param string $statement
14+
* @param array $options
15+
* @return FakePdoStatement
16+
*/
17+
public function prepare($statement, array $options = [])
1318
{
1419
return new FakePdoStatement($this, $statement, $this->real);
1520
}
21+
22+
/**
23+
* @param string $statement
24+
* @return int|false
25+
*/
26+
public function exec($statement)
27+
{
28+
$statement = trim($statement);
29+
if (str_starts_with($statement, 'SET ')){
30+
return false;
31+
}
32+
33+
$sth = $this->prepare($statement);
34+
if ($sth->execute()){
35+
return $sth->rowCount();
36+
}
37+
return false;
38+
}
39+
40+
/**
41+
* @param string $statement
42+
* @param int|null $mode
43+
* @param mixed ...$fetchModeArgs
44+
* @return FakePdoStatement
45+
*/
46+
public function query(string $statement, ?int $mode = PDO::ATTR_DEFAULT_FETCH_MODE, mixed ...$fetchModeArgs)
47+
{
48+
$sth = $this->prepare($statement);
49+
$sth->execute();
50+
return $sth;
51+
}
1652
}

0 commit comments

Comments
 (0)