Skip to content

Commit 8ecb8bd

Browse files
committed
Demo
1 parent 436ed73 commit 8ecb8bd

File tree

1 file changed

+326
-0
lines changed

1 file changed

+326
-0
lines changed

demo.php

Lines changed: 326 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,326 @@
1+
<?php
2+
/*
3+
* PHP-PDO-MySQL-Class
4+
* https://github.com/lincanbin/PHP-PDO-MySQL-Class
5+
*
6+
* Copyright 2014, Lin Canbin
7+
* http://www.94cb.com/
8+
*
9+
* Licensed under the Apache License, Version 2.0:
10+
* http://www.apache.org/licenses/LICENSE-2.0
11+
*
12+
* A PHP MySQL PDO class similar to the the Python MySQLdb.
13+
*/
14+
?>
15+
<html>
16+
<head>
17+
<meta charset="utf-8">
18+
<meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1">
19+
<meta name="viewport" content="width=device-width, initial-scale=1.0">
20+
<title>
21+
PHP-PDO-MySQL-Class
22+
</title>
23+
</head>
24+
<body marginheight="0" style="zoom: 1;">
25+
<h1>
26+
PHP-PDO-MySQL-Class
27+
</h1>
28+
<p>
29+
A PHP MySQL PDO class similar to the the Python MySQLdb.
30+
</p>
31+
<h2>
32+
Initialize
33+
</h2>
34+
<pre>
35+
<code class="lang-php">
36+
&lt;?php
37+
define('DBHost', '127.0.0.1');
38+
define('DBName', 'Database');
39+
define('DBUser', 'root');
40+
define('DBPassword', '');
41+
require(dirname(__FILE__)."/src/PDO.class.php");
42+
$DB = new Db(DBHost, DBName, DBUser, DBPassword);
43+
?&gt;
44+
</code>
45+
</pre>
46+
<?php
47+
/*
48+
49+
50+
The following parameters must be modified before running this DEMO.
51+
52+
53+
*/
54+
define('DBHost', '127.0.0.1');
55+
define('DBName', 'Database');
56+
define('DBUser', 'root');
57+
define('DBPassword', '');
58+
require(dirname(__FILE__)."/src/PDO.class.php");
59+
$DB = new Db(DBHost, DBName, DBUser, DBPassword);
60+
?>
61+
<h2>
62+
Preventing SQL Injection Attacks
63+
</h2>
64+
<h4>
65+
Safety: Use parameter binding method
66+
</h4>
67+
<p>
68+
Safety Example:
69+
</p>
70+
<pre>
71+
<code class="lang-php">
72+
&lt;?php
73+
$DB-&gt;query("SELECT * FROM fruit WHERE name=?", array($_GET['name']));
74+
?&gt;
75+
</code>
76+
</pre>
77+
<h4>
78+
Unsafety: Split joint SQL string
79+
</h4>
80+
<p>
81+
Unsafety Example:
82+
</p>
83+
<pre>
84+
<code class="lang-php">
85+
&lt;?php
86+
$DB-&gt;query("SELECT * FROM fruit WHERE name=".$_GET['name']);
87+
?&gt;
88+
</code>
89+
</pre>
90+
<h2>
91+
Usage
92+
</h2>
93+
<h4>
94+
table "fruit"
95+
</h4>
96+
<p>
97+
<table>
98+
<thead>
99+
<tr>
100+
<th align="center">id</th>
101+
<th align="center">name</th>
102+
<th align="center">color</th>
103+
</tr>
104+
</thead>
105+
<tbody>
106+
<tr>
107+
<td align="center">1</td>
108+
<td align="center">apple</td>
109+
<td align="center">red</td>
110+
</tr>
111+
<tr>
112+
<td align="center">2</td>
113+
<td align="center">banana</td>
114+
<td align="center">yellow</td>
115+
</tr>
116+
<tr>
117+
<td align="center">3</td>
118+
<td align="center">watermelon</td>
119+
<td align="center">green</td>
120+
</tr>
121+
<tr>
122+
<td align="center">4</td>
123+
<td align="center">pear</td>
124+
<td align="center">yellow</td>
125+
</tr>
126+
<tr>
127+
<td align="center">5</td>
128+
<td align="center">strawberry</td>
129+
<td align="center">red</td>
130+
</tr>
131+
</tbody>
132+
</table>
133+
</p>
134+
<?php
135+
$DB->query("DROP TABLE IF EXISTS `fruit`;");
136+
137+
$DB->query("CREATE TABLE IF NOT EXISTS `fruit` (
138+
`id` int(10) unsigned NOT NULL AUTO_INCREMENT,
139+
`name` varchar(32) NOT NULL,
140+
`color` varchar(32) NOT NULL,
141+
PRIMARY KEY (`id`)
142+
) ENGINE=InnoDB DEFAULT CHARSET=latin1 AUTO_INCREMENT=1;");
143+
144+
$DB->query("INSERT INTO `fruit` (`id`, `name`, `color`) VALUES
145+
(1, 'apple', 'red'),
146+
(2, 'banana', 'yellow'),
147+
(3, 'watermelon', 'green'),
148+
(4, 'pear', 'yellow'),
149+
(5, 'strawberry', 'red');
150+
");
151+
?>
152+
<h4>
153+
Fetching with Bindings (ANTI-SQL-INJECTION):
154+
</h4>
155+
<pre>
156+
<code class="lang-php">
157+
&lt;?php
158+
$DB-&gt;query("SELECT * FROM fruit WHERE name=? and color=?",array('apple','red'));
159+
$DB-&gt;query("SELECT * FROM fruit WHERE name=:name and color=:color",array('name'=&gt;'apple','color'=&gt;'red'));
160+
?&gt;
161+
</code>
162+
</pre>
163+
<p>
164+
Result:
165+
</p>
166+
<pre>
167+
<code class="lang-php">
168+
<?php
169+
var_export($DB->query("SELECT * FROM fruit WHERE name=:name and color=:color",array('name'=>'apple','color'=>'red')));
170+
?>
171+
</code>
172+
</pre>
173+
<h4>
174+
WHERE IN:
175+
</h4>
176+
<pre>
177+
<code class="lang-php">
178+
&lt;?php
179+
$DB-&gt;query("SELECT * FROM fruit WHERE name IN (?)",array('apple','banana'));
180+
?&gt;
181+
</code>
182+
</pre>
183+
<p>
184+
Result:
185+
</p>
186+
<pre>
187+
<code class="lang-php">
188+
<?php
189+
var_export($DB->query("SELECT * FROM fruit WHERE name IN (?)",array('apple','banana')));
190+
?>
191+
</code>
192+
</pre>
193+
<h4>
194+
Fetching Column:
195+
</h4>
196+
<pre>
197+
<code class="lang-php">
198+
&lt;?php
199+
$DB-&gt;column("SELECT color FROM fruit WHERE name IN (?)",array('apple','banana','watermelon'));
200+
?&gt;
201+
</code>
202+
</pre>
203+
<p>
204+
Result:
205+
</p>
206+
<pre>
207+
<code class="lang-php">
208+
<?php
209+
var_export($DB->column("SELECT color FROM fruit WHERE name IN (?)",array('apple','banana','watermelon')));
210+
?>
211+
</code>
212+
</pre>
213+
<h4>
214+
Fetching Row:
215+
</h4>
216+
<pre>
217+
<code class="lang-php">
218+
&lt;?php
219+
$DB-&gt;row("SELECT * FROM fruit WHERE name=? and color=?",array('apple','red'));
220+
?&gt;
221+
</code>
222+
</pre>
223+
<p>
224+
Result:
225+
</p>
226+
<pre>
227+
<code class="lang-php">
228+
<?php
229+
var_export($DB->row("SELECT * FROM fruit WHERE name=? and color=?",array('apple','red')));
230+
?>
231+
</code>
232+
</pre>
233+
<h4>
234+
Fetching single:
235+
</h4>
236+
<pre>
237+
<code class="lang-php">
238+
&lt;?php
239+
$DB-&gt;single("SELECT color FROM fruit WHERE name=? ",array('watermelon'));
240+
?&gt;
241+
</code>
242+
</pre>
243+
<p>
244+
Result:
245+
</p>
246+
<pre>
247+
<code class="lang-php">
248+
<?php
249+
echo $DB->single("SELECT color FROM fruit WHERE name=? ",array('watermelon'));
250+
?>
251+
</code>
252+
</pre>
253+
<h4>
254+
Delete / Update / Insert
255+
</h4>
256+
<p>
257+
These operations will return the number of affected result set. (integer)
258+
</p>
259+
<pre>
260+
<code class="lang-php">
261+
&lt;?php
262+
// Delete
263+
$DB-&gt;query("DELETE FROM fruit WHERE id = :id", array("id"=&gt;"1"));
264+
$DB-&gt;query("DELETE FROM fruit WHERE id = ?", array("1")); // Update
265+
$DB-&gt;query("UPDATE fruit SET color = :color WHERE name = :name", array("name"=&gt;"strawberry","color"=&gt;"yellow"));
266+
$DB-&gt;query("UPDATE fruit SET color = ? WHERE name = ?", array("yellow","strawberry"));
267+
// Insert
268+
$DB-&gt;query("INSERT INTO fruit(id,name,color) VALUES(?,?,?)",array(null,"mango","yellow"));//Parameters must be ordered
269+
$DB-&gt;query("INSERT INTO fruit(id,name,color) VALUES(:id,:name,:color)", array("color"=&gt;"yellow","name"=&gt;"mango","id"=&gt;null));//Parameters order free
270+
?&gt;
271+
</code>
272+
</pre>
273+
<?php
274+
// Delete
275+
$DB->query("DELETE FROM fruit WHERE id = :id", array("id"=>"1"));
276+
$DB->query("DELETE FROM fruit WHERE id = ?", array("1")); // Update
277+
$DB->query("UPDATE fruit SET color = :color WHERE name = :name", array("name"=>"strawberry","color"=>"yellow"));
278+
$DB->query("UPDATE fruit SET color = ? WHERE name = ?", array("yellow","strawberry"));
279+
// Insert
280+
$DB->query("INSERT INTO fruit(id,name,color) VALUES(?,?,?)",array(null,"mango","yellow"));//Parameters must be ordered
281+
$DB->query("INSERT INTO fruit(id,name,color) VALUES(:id,:name,:color)", array("color"=>"yellow","name"=>"mango","id"=>null));//Parameters order free
282+
?>
283+
<h4>
284+
Get Last Insert ID
285+
</h4>
286+
<pre>
287+
<code class="lang-php">
288+
&lt;?php
289+
$DB-&gt;lastInsertId();
290+
?&gt;
291+
</code>
292+
</pre>
293+
<p>
294+
Result:
295+
</p>
296+
<pre>
297+
<code class="lang-php">
298+
ID for array("color"=>"yellow","name"=>"mango","id"=>null):
299+
<?php
300+
echo $DB->lastInsertId();
301+
?>
302+
</code>
303+
</pre>
304+
<h4>
305+
Get the number of queries since the object initialization
306+
</h4>
307+
<pre>
308+
<code class="lang-php">
309+
&lt;?php
310+
$DB-&gt;querycount;
311+
?&gt;
312+
</code>
313+
</pre>
314+
<p>
315+
Result:
316+
</p>
317+
<pre>
318+
<code class="lang-php">
319+
<?php
320+
echo $DB->querycount;
321+
?> SQL Queries in this page.
322+
</code>
323+
</pre>
324+
</body>
325+
326+
</html>

0 commit comments

Comments
 (0)