The real release 0.46 :-)
[awl.git] / docs / api / awl / AwlDatabase / AwlDBDialect.html
blob7e4bb9d3310498acef48d21c471a06043c694757
1 <?xml version="1.0" encoding="iso-8859-1"?>
2 <!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
3 <html xmlns="http://www.w3.org/1999/xhtml">
4 <head>
5 <!-- template designed by Marco Von Ballmoos -->
6 <title>Docs For Class AwlDBDialect</title>
7 <link rel="stylesheet" href="../../media/stylesheet.css" />
8 <script src="../../media/lib/classTree.js"></script>
9 <script language="javascript" type="text/javascript">
10 var imgPlus = new Image();
11 var imgMinus = new Image();
12 imgPlus.src = "../../media/images/plus.png";
13 imgMinus.src = "../../media/images/minus.png";
15 function showNode(Node){
16 switch(navigator.family){
17 case 'nn4':
18 // Nav 4.x code fork...
19 var oTable = document.layers["span" + Node];
20 var oImg = document.layers["img" + Node];
21 break;
22 case 'ie4':
23 // IE 4/5 code fork...
24 var oTable = document.all["span" + Node];
25 var oImg = document.all["img" + Node];
26 break;
27 case 'gecko':
28 // Standards Compliant code fork...
29 var oTable = document.getElementById("span" + Node);
30 var oImg = document.getElementById("img" + Node);
31 break;
33 oImg.src = imgMinus.src;
34 oTable.style.display = "block";
37 function hideNode(Node){
38 switch(navigator.family){
39 case 'nn4':
40 // Nav 4.x code fork...
41 var oTable = document.layers["span" + Node];
42 var oImg = document.layers["img" + Node];
43 break;
44 case 'ie4':
45 // IE 4/5 code fork...
46 var oTable = document.all["span" + Node];
47 var oImg = document.all["img" + Node];
48 break;
49 case 'gecko':
50 // Standards Compliant code fork...
51 var oTable = document.getElementById("span" + Node);
52 var oImg = document.getElementById("img" + Node);
53 break;
55 oImg.src = imgPlus.src;
56 oTable.style.display = "none";
59 function nodeIsVisible(Node){
60 switch(navigator.family){
61 case 'nn4':
62 // Nav 4.x code fork...
63 var oTable = document.layers["span" + Node];
64 break;
65 case 'ie4':
66 // IE 4/5 code fork...
67 var oTable = document.all["span" + Node];
68 break;
69 case 'gecko':
70 // Standards Compliant code fork...
71 var oTable = document.getElementById("span" + Node);
72 break;
74 return (oTable && oTable.style.display == "block");
77 function toggleNodeVisibility(Node){
78 if (nodeIsVisible(Node)){
79 hideNode(Node);
80 }else{
81 showNode(Node);
84 </script>
85 </head>
86 <body>
87 <div class="page-body">
88 <h2 class="class-name"><img src="../../media/images/Class_logo.png"
89 alt=" Class"
90 title=" Class"
91 style="vertical-align: middle"> AwlDBDialect</h2>
93 <a name="sec-description"></a>
94 <div class="info-box">
95 <div class="info-box-title">Description</div>
96 <div class="nav-bar">
97 <span class="disabled">Description</span> |
98 <a href="#sec-descendents">Descendents</a>
99 | <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
100 | <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
102 </div>
103 <div class="info-box-body">
104 <!-- ========== Info from phpDoc block ========= -->
105 <p class="short-description">The AwlDBDialect class handles support for different SQL dialects</p>
106 <p class="description"><p>This subpackage provides dialect specific support for PostgreSQL, and may, over time, be extended to provide support for other SQL dialects.</p><p>If you are looking for the place to add support for other SQL dialects, this is the class that you should be looking at. You might also look at the AwlDatabase class which extends this one, but these are the core capabilities which most probably need attention.</p></p>
107 <p class="notes">
108 Located in <a class="field" href="_AwlDBDialect.php.html">/AwlDBDialect.php</a> (line <span class="field">33</span>)
109 </p>
112 <pre></pre>
114 </div>
115 </div>
117 <a name="sec-descendents"></a>
118 <div class="info-box">
119 <div class="info-box-title">Direct descendents</div>
120 <div class="nav-bar">
121 <a href="#sec-description">Description</a> |
122 <span class="disabled">Descendents</span>
123 | <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
124 | <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
126 </div>
127 <div class="info-box-body">
128 <table cellpadding="2" cellspacing="0" class="class-table">
129 <tr>
130 <th class="class-table-header">Class</th>
131 <th class="class-table-header">Description</th>
132 </tr>
133 <tr>
134 <td style="padding-right: 2em; white-space: nowrap">
135 <img src="../../media/images/Class.png"
136 alt=" class"
137 title=" class"
138 style="vertical-align: center"/>
139 <a href="../../awl/AwlDatabase/AwlDatabase.html">AwlDatabase</a>
140 </td>
141 <td>
142 Typically there will only be a single instance of the database level class in an application.
143 </td>
144 </tr>
145 </table>
146 </div>
147 </div>
150 <a name="sec-var-summary"></a>
151 <div class="info-box">
152 <div class="info-box-title">Variable Summary</span></div>
153 <div class="nav-bar">
154 <a href="#sec-description">Description</a> |
155 <a href="#sec-descendents">Descendants</a> |
156 <span class="disabled">Vars</span> (<a href="#sec-vars">details</a>)
158 <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
160 </div>
161 <div class="info-box-body">
162 <div class="var-summary">
163 <div class="var-title">
164 <img src="../../media/images/Variable.png" alt=" " />
165 <span class="var-type">mixed</span>
166 <a href="#$db" title="details" class="var-name">$db</a>
167 </div>
168 <div class="var-title">
169 <img src="../../media/images/Variable.png" alt=" " />
170 <span class="var-type">mixed</span>
171 <a href="#$dialect" title="details" class="var-name">$dialect</a>
172 </div>
173 </div>
174 </div>
175 </div>
177 <a name="sec-method-summary"></a>
178 <div class="info-box">
179 <div class="info-box-title">Method Summary</span></div>
180 <div class="nav-bar">
181 <a href="#sec-description">Description</a> |
182 <a href="#sec-descendents">Descendants</a> |
183 <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
186 <span class="disabled">Methods</span> (<a href="#sec-methods">details</a>)
187 </div>
188 <div class="info-box-body">
189 <div class="method-summary">
191 <div class="method-definition">
192 <img src="../../media/images/Constructor.png" alt=" "/>
193 <span class="method-result">AwlDBDialect</span>
194 <a href="#__construct" title="details" class="method-name">__construct</a>
195 (<span class="var-type">string</span>&nbsp;<span class="var-name">$connection_string</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$dbuser</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$dbpass</span> = <span class="var-default">null</span>], [<span class="var-type">array</span>&nbsp;<span class="var-name">$options</span> = <span class="var-default">null</span>])
196 </div>
198 <div class="method-definition">
199 <img src="../../media/images/Method.png" alt=" "/>
200 <span class="method-result">void</span>
201 <a href="#GetFields" title="details" class="method-name">GetFields</a>
202 (<span class="var-type">string</span>&nbsp;<span class="var-name">$tablename_string</span>)
203 </div>
205 <div class="method-definition">
206 <img src="../../media/images/Method.png" alt=" "/>
207 <span class="method-result">void</span>
208 <a href="#GetVersion" title="details" class="method-name">GetVersion</a>
209 (<span class="var-type">handle</span>&nbsp;<span class="var-name">$pdo</span>)
210 </div>
212 <div class="method-definition">
213 <img src="../../media/images/Method.png" alt=" "/>
214 <span class="method-result">void</span>
215 <a href="#Quote" title="details" class="method-name">Quote</a>
216 (<span class="var-type">mixed</span>&nbsp;<span class="var-name">$value</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$value_type</span> = <span class="var-default">null</span>])
217 </div>
219 <div class="method-definition">
220 <img src="../../media/images/Method.png" alt=" "/>
221 <span class="method-result">The</span>
222 <a href="#ReplaceNamedParameters" title="details" class="method-name">ReplaceNamedParameters</a>
223 (<span class="var-type">string</span>&nbsp;<span class="var-name">0</span>, <span class="var-type">mixed</span>&nbsp;<span class="var-name">1</span>)
224 </div>
226 <div class="method-definition">
227 <img src="../../media/images/Method.png" alt=" "/>
228 <span class="method-result">The</span>
229 <a href="#ReplaceParameters" title="details" class="method-name">ReplaceParameters</a>
230 (<span class="var-type">string</span>&nbsp;<span class="var-name">0</span>, <span class="var-type">mixed</span>&nbsp;<span class="var-name">1</span>)
231 </div>
233 <div class="method-definition">
234 <img src="../../media/images/Method.png" alt=" "/>
235 <span class="method-result">void</span>
236 <a href="#SetSearchPath" title="details" class="method-name">SetSearchPath</a>
237 ([<span class="var-type"></span>&nbsp;<span class="var-name">$search_path</span> = <span class="var-default">null</span>])
238 </div>
240 <div class="method-definition">
241 <img src="../../media/images/Method.png" alt=" "/>
242 <span class="method-result">void</span>
243 <a href="#TranslateSQL" title="details" class="method-name">TranslateSQL</a>
244 (<span class="var-type"></span>&nbsp;<span class="var-name">$sql_string</span>)
245 </div>
246 </div>
247 </div>
248 </div>
250 <a name="sec-vars"></a>
251 <div class="info-box">
252 <div class="info-box-title">Variables</div>
253 <div class="nav-bar">
254 <a href="#sec-description">Description</a> |
255 <a href="#sec-descendents">Descendents</a> |
256 <a href="#sec-var-summary">Vars</a> (<span class="disabled">details</span>)
260 <a href="#sec-method-summary">Methods</a> (<a href="#sec-methods">details</a>)
262 </div>
263 <div class="info-box-body">
265 <a name="var$db" id="$db"><!-- --></A>
266 <div class="evenrow">
268 <div class="var-header">
269 <img src="../../media/images/Variable.png" />
270 <span class="var-title">
271 <span class="var-type">mixed</span>
272 <span class="var-name">$db</span>
273 (line <span class="line-number">46</span>)
274 </span>
275 </div>
277 <!-- ========== Info from phpDoc block ========= -->
278 <p class="short-description">Holds the PDO database connection</p>
279 <ul class="tags">
280 <li><span class="field">access:</span> protected</li>
281 </ul>
287 </div>
288 <a name="var$dialect" id="$dialect"><!-- --></A>
289 <div class="oddrow">
291 <div class="var-header">
292 <img src="../../media/images/Variable.png" />
293 <span class="var-title">
294 <span class="var-type">mixed</span>
295 <span class="var-name">$dialect</span>
296 (line <span class="line-number">41</span>)
297 </span>
298 </div>
300 <!-- ========== Info from phpDoc block ========= -->
301 <p class="short-description">Holds the name of the database dialect</p>
302 <ul class="tags">
303 <li><span class="field">access:</span> protected</li>
304 </ul>
310 </div>
312 </div>
313 </div>
315 <a name="sec-methods"></a>
316 <div class="info-box">
317 <div class="info-box-title">Methods</div>
318 <div class="nav-bar">
319 <a href="#sec-description">Description</a> |
320 <a href="#sec-descendents">Descendents</a> |
321 <a href="#sec-var-summary">Vars</a> (<a href="#sec-vars">details</a>)
322 <a href="#sec-method-summary">Methods</a> (<span class="disabled">details</span>)
324 </div>
325 <div class="info-box-body">
326 <A NAME='method_detail'></A>
327 <a name="method__construct" id="__construct"><!-- --></a>
328 <div class="evenrow">
330 <div class="method-header">
331 <img src="../../media/images/Constructor.png" />
332 <span class="method-title">Constructor __construct</span> (line <span class="line-number">68</span>)
333 </div>
335 <!-- ========== Info from phpDoc block ========= -->
336 <p class="short-description">Parses the connection string to ascertain the database dialect. Returns true if the dialect is supported and fails if the dialect is not supported. All code to support any given database should be within in an external include.</p>
337 <p class="description"><p>The database will be opened.</p></p>
339 <div class="method-signature">
340 <span class="method-result">AwlDBDialect</span>
341 <span class="method-name">
342 __construct
343 </span>
344 (<span class="var-type">string</span>&nbsp;<span class="var-name">$connection_string</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$dbuser</span> = <span class="var-default">null</span>], [<span class="var-type">string</span>&nbsp;<span class="var-name">$dbpass</span> = <span class="var-default">null</span>], [<span class="var-type">array</span>&nbsp;<span class="var-name">$options</span> = <span class="var-default">null</span>])
345 </div>
347 <ul class="parameters">
348 <li>
349 <span class="var-type">string</span>
350 <span class="var-name">$connection_string</span><span class="var-description">: The PDO connection string, in all it's glory</span> </li>
351 <li>
352 <span class="var-type">string</span>
353 <span class="var-name">$dbuser</span><span class="var-description">: The database username to connect as</span> </li>
354 <li>
355 <span class="var-type">string</span>
356 <span class="var-name">$dbpass</span><span class="var-description">: The database password to connect with</span> </li>
357 <li>
358 <span class="var-type">array</span>
359 <span class="var-name">$options</span><span class="var-description">: An array of driver options</span> </li>
360 </ul>
363 </div>
364 <a name="methodGetFields" id="GetFields"><!-- --></a>
365 <div class="oddrow">
367 <div class="method-header">
368 <img src="../../media/images/Method.png" />
369 <span class="method-title">GetFields</span> (line <span class="line-number">134</span>)
370 </div>
372 <!-- ========== Info from phpDoc block ========= -->
373 <p class="short-description">Returns the SQL for the current database dialect which will return a two-column resultset containing a list of fields and their associated data types.</p>
375 <div class="method-signature">
376 <span class="method-result">void</span>
377 <span class="method-name">
378 GetFields
379 </span>
380 (<span class="var-type">string</span>&nbsp;<span class="var-name">$tablename_string</span>)
381 </div>
383 <ul class="parameters">
384 <li>
385 <span class="var-type">string</span>
386 <span class="var-name">$tablename_string</span><span class="var-description">: The name of the table we want fields from</span> </li>
387 </ul>
390 </div>
391 <a name="methodGetVersion" id="GetVersion"><!-- --></a>
392 <div class="evenrow">
394 <div class="method-header">
395 <img src="../../media/images/Method.png" />
396 <span class="method-title">GetVersion</span> (line <span class="line-number">105</span>)
397 </div>
399 <!-- ========== Info from phpDoc block ========= -->
400 <p class="short-description">Sets the current search path for the database.</p>
402 <div class="method-signature">
403 <span class="method-result">void</span>
404 <span class="method-name">
405 GetVersion
406 </span>
407 (<span class="var-type">handle</span>&nbsp;<span class="var-name">$pdo</span>)
408 </div>
410 <ul class="parameters">
411 <li>
412 <span class="var-type">handle</span>
413 <span class="var-name">$pdo</span><span class="var-description">: A handle to an opened database</span> </li>
414 </ul>
417 </div>
418 <a name="methodQuote" id="Quote"><!-- --></a>
419 <div class="oddrow">
421 <div class="method-header">
422 <img src="../../media/images/Method.png" />
423 <span class="method-title">Quote</span> (line <span class="line-number">178</span>)
424 </div>
426 <!-- ========== Info from phpDoc block ========= -->
427 <p class="short-description">Returns $value escaped in an appropriate way for this database dialect.</p>
429 <div class="method-signature">
430 <span class="method-result">void</span>
431 <span class="method-name">
432 Quote
433 </span>
434 (<span class="var-type">mixed</span>&nbsp;<span class="var-name">$value</span>, [<span class="var-type">string</span>&nbsp;<span class="var-name">$value_type</span> = <span class="var-default">null</span>])
435 </div>
437 <ul class="parameters">
438 <li>
439 <span class="var-type">mixed</span>
440 <span class="var-name">$value</span><span class="var-description">: The value to be escaped</span> </li>
441 <li>
442 <span class="var-type">string</span>
443 <span class="var-name">$value_type</span><span class="var-description">: The type of escaping desired. If blank this will be worked out from the type of the $value. The special type of 'identifier' can also be used for escaping of SQL identifiers.</span> </li>
444 </ul>
447 </div>
448 <a name="methodReplaceNamedParameters" id="ReplaceNamedParameters"><!-- --></a>
449 <div class="evenrow">
451 <div class="method-header">
452 <img src="../../media/images/Method.png" />
453 <span class="method-title">ReplaceNamedParameters</span> (line <span class="line-number">334</span>)
454 </div>
456 <!-- ========== Info from phpDoc block ========= -->
457 <p class="short-description">Replaces named query parameters of the form :name with appropriately escaped substitutions.</p>
458 <p class="description"><p>The function takes a variable number of arguments, the first is the SQL string, with replaceable ':name' characters (a la DBI). The subsequent parameters being the values to replace into the SQL string.</p><p>The values passed to the routine are analyzed for type, and quoted if they appear to need quoting. This can go wrong for (e.g.) NULL or other special SQL values which are not straightforwardly identifiable as needing quoting (or not).</p></p>
459 <ul class="tags">
460 <li><span class="field">return:</span> built query string</li>
461 </ul>
463 <div class="method-signature">
464 <span class="method-result">The</span>
465 <span class="method-name">
466 ReplaceNamedParameters
467 </span>
468 (<span class="var-type">string</span>&nbsp;<span class="var-name">0</span>, <span class="var-type">mixed</span>&nbsp;<span class="var-name">1</span>)
469 </div>
471 <ul class="parameters">
472 <li>
473 <span class="var-type">string</span>
474 <span class="var-name">0</span><span class="var-description">: The query string with replacable ':name' identifiers</span> </li>
475 <li>
476 <span class="var-type">mixed</span>
477 <span class="var-name">1</span><span class="var-description">: A ':name' =&gt; 'value' hash of values to replace into the SQL string.</span> </li>
478 </ul>
481 </div>
482 <a name="methodReplaceParameters" id="ReplaceParameters"><!-- --></a>
483 <div class="oddrow">
485 <div class="method-header">
486 <img src="../../media/images/Method.png" />
487 <span class="method-title">ReplaceParameters</span> (line <span class="line-number">278</span>)
488 </div>
490 <!-- ========== Info from phpDoc block ========= -->
491 <p class="short-description">Replaces query parameters with appropriately escaped substitutions.</p>
492 <p class="description"><p>The function takes a variable number of arguments, the first is the SQL string, with replaceable '?' characters (a la DBI). The subsequent parameters being the values to replace into the SQL string.</p><p>The values passed to the routine are analyzed for type, and quoted if they appear to need quoting. This can go wrong for (e.g.) NULL or other special SQL values which are not straightforwardly identifiable as needing quoting (or not). In such cases the parameter can be forced to be inserted unquoted by passing it as &quot;array( 'plain' =&gt; $param )&quot;.</p></p>
493 <ul class="tags">
494 <li><span class="field">return:</span> built query string</li>
495 </ul>
497 <div class="method-signature">
498 <span class="method-result">The</span>
499 <span class="method-name">
500 ReplaceParameters
501 </span>
502 (<span class="var-type">string</span>&nbsp;<span class="var-name">0</span>, <span class="var-type">mixed</span>&nbsp;<span class="var-name">1</span>)
503 </div>
505 <ul class="parameters">
506 <li>
507 <span class="var-type">string</span>
508 <span class="var-name">0</span><span class="var-description">: The query string with replacable '?' characters.</span> </li>
509 <li>
510 <span class="var-type">mixed</span>
511 <span class="var-name">1</span><span class="var-description">: The values to replace into the SQL string.</span> </li>
512 </ul>
515 </div>
516 <a name="methodSetSearchPath" id="SetSearchPath"><!-- --></a>
517 <div class="evenrow">
519 <div class="method-header">
520 <img src="../../media/images/Method.png" />
521 <span class="method-title">SetSearchPath</span> (line <span class="line-number">87</span>)
522 </div>
524 <!-- ========== Info from phpDoc block ========= -->
525 <p class="short-description">Sets the current search path for the database.</p>
527 <div class="method-signature">
528 <span class="method-result">void</span>
529 <span class="method-name">
530 SetSearchPath
531 </span>
532 ([<span class="var-type"></span>&nbsp;<span class="var-name">$search_path</span> = <span class="var-default">null</span>])
533 </div>
535 <ul class="parameters">
536 <li>
537 <span class="var-type"></span>
538 <span class="var-name">$search_path</span> </li>
539 </ul>
542 </div>
543 <a name="methodTranslateSQL" id="TranslateSQL"><!-- --></a>
544 <div class="oddrow">
546 <div class="method-header">
547 <img src="../../media/images/Method.png" />
548 <span class="method-title">TranslateSQL</span> (line <span class="line-number">164</span>)
549 </div>
551 <!-- ========== Info from phpDoc block ========= -->
552 <p class="short-description">Translates the given SQL string into a form that will hopefully work for this database dialect. This hook is intended to be used by developers to provide support for differences in database operation by translating the query string in an arbitrary way, such as through a file or database lookup.</p>
553 <p class="description"><p>The actual translation to other SQL dialects will be application-specific, so that any routines called by this will be external to this library, or will use resources loaded from some source external to this library.</p><p>The application developer is expected to use this functionality to solve harder translation problems, but is less likely to call this directly, hopefully switching -&gt;Prepare to -&gt;PrepareTranslated in those cases, and then adding that statement to whatever SQL translation infrastructure is in place.</p></p>
555 <div class="method-signature">
556 <span class="method-result">void</span>
557 <span class="method-name">
558 TranslateSQL
559 </span>
560 (<span class="var-type"></span>&nbsp;<span class="var-name">$sql_string</span>)
561 </div>
563 <ul class="parameters">
564 <li>
565 <span class="var-type"></span>
566 <span class="var-name">$sql_string</span> </li>
567 </ul>
570 </div>
572 </div>
573 </div>
576 <p class="notes" id="credit">
577 Documentation generated on Tue, 28 Dec 2010 02:01:35 +1300 by <a href="http://www.phpdoc.org" target="_blank">phpDocumentor 1.4.3</a>
578 </p>
579 </div></body>
580 </html>