@@ -27,6 +27,45 @@ public function testBindParams()
27
27
*/
28
28
}
29
29
30
+ public function testNamedParams ()
31
+ {
32
+ $ query = new Query ('select * from test where id = :id and name = :name ' );
33
+ $ sql = $ query ->bindParamsFromArray ([
34
+ 'id ' => 100 ,
35
+ 'name ' => 'test '
36
+ ])->getSql ();
37
+ $ this ->assertEquals ("select * from test where id = 100 and name = 'test' " , $ sql );
38
+
39
+ $ query = new Query ('select * from test where id = :id and name = :name ' );
40
+ $ sql = $ query ->bindParamsFromArray ([
41
+ ':id ' => 100 ,
42
+ ':name ' => 'test '
43
+ ])->getSql ();
44
+ $ this ->assertEquals ("select * from test where id = 100 and name = 'test' " , $ sql );
45
+
46
+ $ query = new Query ('select * from test where id in (:in) and name = :name ' );
47
+ $ sql = $ query ->bindParamsFromArray ([
48
+ 'in ' => [1 , 2 ],
49
+ 'name ' => 'test '
50
+ ])->getSql ();
51
+ $ this ->assertEquals ("select * from test where id in (1,2) and name = 'test' " , $ sql );
52
+
53
+ // mixed named & ?
54
+ $ query = new Query ('select * from test where id in (?) and name = :name ' );
55
+ $ sql = $ query ->bindParamsFromArray ([
56
+ [1 , 2 ],
57
+ 'name ' => 'test '
58
+ ])->getSql ();
59
+ $ this ->assertEquals ("select * from test where id in (1,2) and name = 'test' " , $ sql );
60
+
61
+ $ query = new Query ('select * from test where id in (:in) and name = ? ' );
62
+ $ sql = $ query ->bindParamsFromArray ([
63
+ 'in ' => [1 , 2 ],
64
+ 'test '
65
+ ])->getSql ();
66
+ $ this ->assertEquals ("select * from test where id in (1,2) and name = 'test' " , $ sql );
67
+ }
68
+
30
69
public function testGetSqlReturnsQuestionMarkReplacedWhenBound ()
31
70
{
32
71
$ query = new Query ('select ? ' );
@@ -55,6 +94,16 @@ public function testGetSqlReturnsQuestionMarkReplacedFromBoundWhenBound()
55
94
$ this ->assertEquals ("select CONCAT('hello??', 'world??') " , $ sql );
56
95
}
57
96
97
+ public function testGetSqlReturnsNamedParamsReplacedFromBoundWhenBound ()
98
+ {
99
+ $ query = new Query ('select CONCAT(:param1, :param2) ' );
100
+ $ sql = $ query ->bindParamsFromArray ([
101
+ 'param1 ' => ':param2 ' ,
102
+ 'param2 ' => 'world '
103
+ ])->getSql ();
104
+ $ this ->assertEquals ("select CONCAT(':param2', 'world') " , $ sql );
105
+ }
106
+
58
107
public function testGetSqlReturnsQuestionMarksAsIsWhenNotBound ()
59
108
{
60
109
$ query = new Query ('select "hello?" ' );
0 commit comments