|
- PHP3¦w¸Ë»P³]©w
- PHP3 ²¤¶
¥þ¦W¬°Personal Home
Page III¡APHP3¬O¤@ºØªþ¥[¦bHTML¤¤ªºµ{¦¡»y¨¥¡A¥i±NÀɮ׸g¹Lphp3.exeªºcomplier«á¡A½sͦ¨HTMLÀɦӵo§G¥X¥h¡A©Ò¥HPHP3¥i¥H¸Ë¸m©óserverºÝ¦Ó¤£¥Î¸Ë¸m©óclientºÝ¡C¡A²Ä¤@ª©¦b1995¦~ªìµo¦æ¡A²Ä¤Gª©¦b1995¦~¤¤µo¦æ¡A¦b1997¦~±À¥XPHP²Ä¤Tª©¡A¤]´N¬O²{¦bªºPHP3¡A±q±À¦æ¥H¨Ó¡A¥Ñ©ó²³æ©ö¾Ç¡A¨ü¨ì¼s¤j¨Ï¥ÎªÌªºÅwªï¡A¨ìMarch 1999¬°¤î¦@¦³ 409418 Domains, 143667 IP Addresses¨Ï¥ÎPHP¨Ó°µ¬°¶}µoºô¯¸¸ê®Æ®w¨t²Îªºµ{¦¡»y¨¥¡A3.0 ª©§ó¥[¤J¦w¥þ±±¨îªº¥\¯à¡A¤]¤ä´©Àɦw¤W¸ü¤ÎHTTP cookieªº¥\¯à¡A³Ì«nªº¬O¥i¥H³s±µ¨ì¥Ø«e¦UºØª¾¦Wªº¸ê®Æ®w¨t²Î¡A¦CÁ|¦p¤U¡G
DBMaker
Oracle
Adabas D
Sybase
FilePro
mSQL
Velocis
MySQL
Informix
Solid
dBase
ODBC
Unix dbm
PostgreSQL
- PHP3 Server ªº¦w¸Ë»P³]©w
¤@¯ë¦w¸Ë
±z¥i¥H¿ï¾Ü±NPHP3¦w¸Ë¦bWindows NT¤W©Î¬OUnix-basedªº§@·~¥¥x¤W¡A¦b¥»®Ñ¤¤¥u¦³¤¶²Ð¦p¦ó¦w¸ËPHP3¨ì±zªºLinux§@·~¨t²Î¤W¡A¥i¥H¨ìhttp://www.php.net.ºô¯¸¤WÀH®É¤U¸ü³Ì·sªºª©¥»¡C
¦w¸Ë¨BÆJ¦p¤U
1. gunzip apache_1.3.x.tar.gz
2. tar xvf apache_1.3.x.tar
3. gunzip php-3.0.x.tar.gz
4. tar xvf php-3.0.x.tar
5. cd apache_1.3.x
6. ./configure --prefix=/www
7. cd ../php-3.0.x
8. ./configure --with-mysql --with-apache=../apache_1.3.x --enable-track-vars
9. make
10. make install
11. cd ../apache_1.3.x
12. ./configure --prefix=/www --activate-module=src/modules/php3/libphp3.a
13. make
14. make install
Instead of this step you may prefer to simply copy the httpd binary
overtop of your existing binary. Make sure you shut down your server
first though.
15. cd ../php-3.0.x
16. cp php3.ini-dist /usr/local/lib/php3.ini
You can edit /usr/local/lib/php3.ini file to set PHP options. If
you prefer this file in another location, use --with-config-file=/path
in
step 8.
17. Edit your httpd.conf or srm.conf file and add:
AddType application/x-httpd-php3 .php3 You can choose any extension
you wish here. .php3 is simply the one we suggest.
¨Ï¥ÎDBMaker
¦w¸Ë§¹Apache
Server ¤§«á¡A°õ¦æphp.txt¡A¤º®e¦p¤U
cd php-3.0.7
patch -p1 < ../php-3.07-dbmaker.patch
env CUSTOM_ODBC_LIBS="-ldmapic" ./configure --with-custom-odbc=/home3.\
--with-apxs=/usr/local/www/apache/bin/apxs --enable-track-vars
make
make install (¨Ï¥Îroot±b¸¹)
¡@
³oÓÀÉ®×·|±NPHP3¤¤ªºsample§ï¦¨for DBMakerªºsample¡A¦P®É¤]±Nodbc.hÀÉ®×ק令¾A¦XDBMakerªº¤º®e¡C
- PHP3»yªk
- ¦bHTML¤¤¥[¤JPHP3
±q³o¤@³¹¶}©l¡A§ÚÌn¶}©l¤¶²Ð¦p¦ó¼¶¼g±zªº²Ä¤@ÓPHP3µ{¦¡¡A´N¹³ASP, Java¤@¼Ë¡A±z¥i¥H¦b±zªºHTML¤¤ª½±µ¥[¤J¤@¬qPHP3ªºµ{¦¡½X¡A©Î¬O¼¶¼g¤@Ó¥þ³¡³£¬OPHP»yªkªºµ{¦¡¡A¼¶¼g¦nªºµ{¦¡¡A¦b¤@¯ëªº±¡ªp¤U¡A°ÆÀɦW½Ð©R¦W¬°.php3¡A¦pªG±z¦b¦w¸Ë®É³]©w°ÆÀɦW¤£¬Ophp3(AddType application/x-httpd-php3 .php3)¡A¨º´Nn¨Ï¥Î±z³]©wªº°ÆÀɦW¡C
¦bPHP3Àɮפ¤¡A±z¥i¥H¨Ï¥Î¤U¦C¥|ºØ¤èªk¨Óªí¥Ü¸Ó¬q¤å¦r¬°PHP3ªºµ{¦¡¡C
1. <? echo("this is the simplest, an SGML processing instruction\n");
?>
2. <?php echo("if you want to serve XML documents, do like
this\n"); ?>
3. <script language="php">
echo("some editors (like FrontPage) don't like processing
instructions");
</script>
4. <% echo("As of PHP 3.0.4 you may optionally use ASP-style
tags"); %>
- ÅܼÆ
Åܼƪì©l(initialize)
¦bPHP3¤¤¡A¦b¨Ï¥ÎÅܼƤ§«e±z¤£»Ýn«Å§iÅܼơA¤]¤£»Ý«ü©wÅܼƪº«¬ºA¡Anªì©l¤@ÓÅܼơA¥un«ü©wȵ¹¸ÓÅܼƧY¥i¡A¦p
ªì©l¤@Óarray
$names[] = "Jill"; // $names[0] = "Jill"
$names[] = "Jack"; // $names[1] = "Jack"
¡@
ªì©l¤@Óª«¥ó
class foo {
function do_foo() {
echo "Doing foo.";
}
}
$bar = new foo;
$bar->do_foo();
Åܼƽd³ò
¦bPHP3¤¤¡AÅܼƦ³®Ä½d³ò¥u©w¦b¨ä©w¸qªºµ{¦¡¤¤¡A¦pªGµ{¦¡¥]§tfunction¡Afunction¤ºªºÅܼƦ³®Ä½d³ò¤]¥u©w©ófunction ¤º¡A¦pªGfunctionn¨Ï¥Îfunction¥~ªºÅܼơA¥²¶·¦bÅܼƫe±¥[¤Wglobal¡@
½d¨Ò1:¤£¨Ï¥Îglobal
$a=1; /* global scope */
Function Test() {
echo $a; /* reference to local
scope variable, a ¬°ªÅÈ */
}
Test();
½d¨Ò2:
¨Ï¥Îglobal¦s¨úÅܼơA$bµ²ªG¬°3
$a=1;
$b=2;
Function Sum() {
global $a,$b;
$b = $a + $b;
}
Sum();
echo $b;
½d¨Ò3:¡@¨Ï¥Î$glbals¦s¨úÅܼơA
$a=1;
$b=2;
Function Sum()
$GLOBALS["b"] = $GLOBALS["a"] + $GLOBALS["b"];
}
Sum();
echo $b;
¡@
¦³®ÉÔ±z»Ýn¨Ï¥Î¨ìÀRºAªºÅܼơA¨Ò¦p¤@Ó»¼°jªºµ{¦¡¡A¦b¤U¨Ò¤¤¡A«ü©wcount¬°¤@ÓÀRºAªºÅܼơA¥¦¥uªì©l¤@¦¸¡A©¹«á¦A¸I¨ìstatic $count=0ªº»yªk¡A¤£·|«·sªì©lÅܼơC
½d¨Ò
Function Test() {
static $count=0;
$count++;
echo $count;
if($count < 10) {
Test();
}
}
- ¨ú±o¨Ï¥ÎªÌ±qBrowser¿é¤JªºÈ
¨Ï¥ÎPost¤ÎGet
¦bCGI¤¤±z¥i¥H¨Ï¥ÎPost¤ÎGet¤GºØ¤èªk¶Ç»¼client¿é¤JªºÈ¨ìweb server¤¤¡A¦ýServerºÝ«ç»ò¥h±µ¦¬clientºÝ¶Ç¹L¨ÓªºÈ©O¡H¦pªG¨Ï¥Îªº¬O¶Ç²ÎªºC¡An¨ú±o¨Ï¥ÎªÌ¿é¤JªºÈ«D±`³Â·Ð¡A¦ý¦bPHP3¤¤«o¬O«D±`²³æªº¤@¥ó¨Æ¡A¥un¨Ï¥Î¸òFormùرªºª«¥ó¦WºÙ¤@¼Ò¤@¼ËªºÅܼơA´N¥i¥H¦s¨ú¨ì¨Ï¥ÎªÌ¿é¤JªºÈ¡C
½d¨Ò
¨Ò¦p±z³]pªº¤@ÓForm¦p¤U¡A·í±z«ö¤Uµe±¤¤ªºsubmit®É¡A·|±Ò°Êserver ºÝªºsubmit.php3µ{¦¡¡A¦]¦¹¦pªGn¦bsubmit.php3µ{¦¡¤¤±oª¾¨Ï¥ÎªÌ¿é¤JªºÈ¡A¥un¨Ï¥Î$text1ÅܼƧY¥i¡A

<form method="post" action="submit.php3" name="test_form">
<p>input value:
<input type="text" name="text1">
</p>
<p>
<input type="submit" name="Submit" value="Submit">
</p>
</form>
§Q¥ÎURL¶Ç»¼°Ñ¼Æ
¦bWWW¤¤¡A±z¥i¯à±`¨£¨ì¦p¤Uªº»yªk
<A Href="show.php3?sn=20&category=book">«ö³oùØ¥i¥H¨£¨ì¸Ô²Ó¤º®e</a>
n¨ú±o¶Ç»¼¹L¨Óªº°Ñ¼Æ¡A¥un¨Ï¥Î¸ò°Ñ¼Æ¦WºÙ¤@¼Ò¤@¼ËªºÅܼƧY¥i¡A¦p$sn,$category
¨Ï¥ÎCookie
±z¥i¥H¨Ï¥ÎSetCookie³oÓ¨ç¼Æ¨Ó±NȦs¨ì¨Ï¥ÎªÌºÝªº¹q¸£¤¤¡A¦pªGn¨ú±o¨Ï¥ÎªÌºÝ¹q¸£¤¤ªºCookieÈ¡Aª½±µ¨Ï¥Îì¥ý¦s¤JªºÅܼƦWºÙ§Y¥i¡C
SetCookie("TestCookie","Test Value");
SetCookie("TestCookie",$value,time()+3600); /* expire in 1
hour */
ª`·N¡G¥Ñ©óCookie¬OHTTP Headerªº¤@³¡¥÷¡A¦]¦¹±z¥²¶·¦b¿é¤Jºô¶¤º®e¤§«e¨Ï¥ÎSetCookie¡A§_«h¦¹¨ç¼Æ´NµLªk¥Í®Ä¡C
¡@
- ¸ê®Æ«¬ºA
¦b¤@¯ëªºµ{¦¡»y¨¥¤¤¡A¨CÓÅܼƳ£¦³¨ä«¬ºA¡A¦pinteger, string, float, double..µ¥¡A¦ý¦bPHP3¤¤¡A±z¤£¶·n«ü©wÅܼƪº«¬§O¡APHP3·|®Ú¾Ú±z¿é¤JªºÈ¦Û°ÊÀ°±zÂà´«¸ê®Æ«¬§O¡C
½d¨Ò¡G
$foo = "0"; // $foo is a string (ASCII 48)
$foo++; // $foo is the string "1" (ASCII 49)
$foo += 1; // $foo is now an integer (2)
$foo = $foo + 1.3; // $foo is now a double (3.3)
¦pªG±zn±j¨îPHP3¨Ï¥Î¯S©wªº¸ê®Æ«¬§O¡A¥i¥Hª½±µ¦bÅܼƫe¥[¤J¸Ó¸ê®Æªº«¬§O¡A¦p
$foo = 10; // $foo is an integer
$bar = (double) $foo; // $bar is a double
¤¹³\ªº¸ê®Æ«¬§O¦p¤U¡G
(int), (integer) - cast to integer
(real), (double), (float) - cast to double
(string) - cast to string
(array) - cast to array
(object) - cast to object
¡@
- »y¨¥µ²ºc
IF
if (expr)
statement
½d¨Ò1
if ($a > $b)
print "a is bigger than b";
½d¨Ò2
if ($a>$b) {
print "a is bigger than b";
$b = $a;
}
Else
if ($a>$b) {
print "a is bigger than b";
} else {
print "a is NOT bigger than b";
}
ELSEIF
if ($a > $b) {
print "a is bigger than b";
} elseif ($a == $b) {
print "a is equal to b";
} else {
print "a is smaller than b";
}
IF(): ¡K ENDIF
¦pªG¦b±zªºIF±Ôz¤¤»Ýn¨Ï¥Î¨ì¤@¯ëªºHTML¡A°£«D±z¨Ï¥Îecho¡A§_«h±z¤£¯àª½±µ±NHTML¥[¦bµ{¦¡¤¤¡A¦pªG±zn¦bIF¤¤¥[¤JHTML¡A¥i¥H¨Ï¥ÎIF(): ¡K ENDIF¨Ó¥N´À
½d¨Ò1¡G¿ù»~½d¨Ò
<?php if ($a==5){ ?>
<font size=¡¨2">Welcome!</font>
<?php } ?>
¡@
½d¨Ò2:¥¿½T½d¨Ò
<?php if ($a==5): ?>
<font size=¡¨2">Welcome!</font>
<?php endif; ?>
WHILE
»yªk¡G
WHILE(expr) statement
WHILE(expr): statement ... ENDWHILE;
½d¨Ò1¡G
$i=1;
while ($i<=10) {
print $i++; /*¥ýPrint¥X$i¤§«á¡A¦A±Ni¥[1*/
}
½d¨Ò2¡G
$i=1;
while ($i<=10):
print $i;
$i++;
endwhile;
DO..WHILE
½d¨Ò1¡G
$i = 0;
do {
print $i;
} while ($i>0);
½d¨Ò2¡G
do {
if ($i < 5) {
print "i is not big enough";
break;
}
$i *= $factor;
if ($i < $minimum_limit) {
break;
}
print "i is ok";
} while(0);
FOR
»yªk¡G
FOR (expr1; expr2; expr3) statement
¤£¤ä´©FOR(expr):
... ENDFOR
½d¨Ò1¡G
for ($i=1; $i<=10; $i++) {
print $i;
}
½d¨Ò2¡G
for ($i = 1;;$i++) {
if ($i > 10) {
break;
}
print $i;
}
½d¨Ò3¡G
$i = 1;
for (;;) {
if ($i > 10) {
break;
}
print $i;
$i++;
}
SWITCH
½d¨Ò1¡G¨Ï¥ÎIF
if ($i == 0) {
print "i equals 0";
}
if ($i == 1) {
print "i equals 1";
}
if ($i == 2) {
print "i equals 2";
}
½d¨Ò2:¨Ï¥Îswitch
switch ($i) {
case 0:
print "i equals 0";
break;
case 1:
print "i equals 1";
break;
case 2:
print "i equals 2";
break;
}
¦bswitch¤¤¡A·í±ø¥ó²Å¦X®É¡A¤@©wn¨Ï¥Îbreak¨Ó¸õ¥Xswitch¡A§_«hPHP3·|±qÄ~Äò°õ¦æ«á±ªº±Ôz
½d¨Ò3:
switch ($i) {
case 0:
print "i equals 0";
case 1:
print "i equals 1";
case 2:
print "i equals 2";
}
·í$i=0®É¡A·|¦C¦L¥Xi equals 0 i equals 1 i equals 2
·í$i=1®É¡A·|¦C¦L¥Xi equals 1 i equals 2
·í$i=2®É¡A·|¦C¦L¥Xi equals 2
½d¨Ò4:¨ä¥¦È¥i¥H¥ÎDefaultªí¥Ü
switch ($i) {
case 0:
print "i equals 0";
break;
case 1:
print "i equals 1";
break;
case 2:
print "i equals 2";
break;
default:
print "i is not equal to 0, 1 or 2";
}
REQUIRE
include¤@ÓÀÉ®×¶i¨Ó¡A¸òC»y¨¥¤¤ªº#include«D±`Ãþ¦ü¡A¦ý±z¤£¯à¦b°j°é¤¤¨Ï¥ÎREQUIRE
½d¨Ò¡G
require('header.inc');
INCLUDE
¸òREQUIRE¤@¼Ë¡A¤£¦Pªº¬O¡A±z¥i¥H¦b°j°é¤¤¨Ï¥ÎINCLUDE
½d¨Ò¡G
$files = array('first.inc', 'second.inc', 'third.inc');
for ($i = 0; $i < count($files); $i++) {
include($files[$i]);
- FUNCTION
¦bPHP3¤¤¡A±z¤]¥i¥H©w¸q¤@¨Ç¨ç¼Æ¡A©w¸qªº¤è¦¡¤j·§¦p¤U¡G
function foo( $arg_1, $arg_2, ..., $arg_n ) {
¡@¡@¡@echo
"Example function.\n";
return $retval;
¡b
¶Ç¦^È
¦pªG¦b¨ç¼Æ¤¤n¶Ç¦^È¡A¥i¥H¨Ï¥ÎReturn
½d¨Ò1¡G¶Ç¦^³æ¤@È
function my_sqrt( $num ) {
return $num * $num;
}
echo my_sqrt( 4 ); // outputs '16'.
½d¨Ò2:¶Ç¦^¦h«È
function foo() {
return array( 0, 1, 2 );
}
list( $zero, $one, $two ) = foo();
¨ç¼Æ°Ñ¼Æ
¦bµ{¦¡¤¤¡A±z¤]¥i¥H¶Ç»¼°Ñ¼Æ¦Ü¨ç¼Æ¤¤³B²z¡A°Ñ¼Æ¶Ç»¼¤S¤À¬°Passing by reference¤ÎPassing by value¡A¹w³]Ȭ°Passing by value¡C
½d¨Ò1:Passing
by reference
function foo( &$bar ) {
$bar .= ' and something extra.';
}
$str = 'This is a string, ';
foo2( $str );
echo $str; // outputs 'This is a string, and something extra.'
½d¨Ò2:Passing by value
function foo( $bar ) {
$bar .= ' and something extra.';
}
$str = 'This is a string, ';
foo2( $str );
echo $str; // outputs 'This is a string, '
foo2( &$str );
echo $str; // outputs 'This is a string, and something extra.'
- ¹Bºâ¤l
¼Æ¦r¹Bºâ¤l
|
¦WºÙ
|
½d¨Ò
|
|
¥[ªk(Addition)
|
$a + $b
|
|
´îªk(Subtraction)
|
$a - $b
|
|
¼ªk(Multiplication)
|
$a * $b
|
|
°£ªk(Division)
|
$a / $b
|
|
¨ú¾l¼Æ(Modulus)
|
$a % $b
|
¦r¦ê¹Bºâ¤l
n¬Û¥[¤GÓ¦r¦ê¡A¥²¶·¥Î¡¨.¡¨
½d¨Ò¡G
$a = "Hello ";
$b = $a . "World!"; // now $b = "Hello World!"
ÅÞ¿è¹Bºâ¤l
|
½d¨Ò
|
¦WºÙ
|
µ²ªG
|
|
$a and $b
|
And
|
$a,$b¬Ò¬°True,¤~·|¶Ç¦^True
|
|
$a or $b
|
Or
|
$a,$b¨ä¤¤¤@Ó¬°True,¶Ç¦^True
|
|
$a xor $b
|
Or
|
$a,$b¨ä¤¤¥u¦³¤@Ó¬°True®É¡A¶Ç¦^True,Y¤GÓ¬Ò¬°True©Î¬OFalse,¶Ç¦^False
|
|
!$a
|
Not
|
$a¤£¬°True®É¡A¶Ç¦^True
|
|
$a && $b
|
And
|
$a, $b¬Ò¬°True,¤~·|¶Ç¦^True
|
|
$a || $b
|
Or
|
$a, $b¨ä¤¤¤@Ó¬°True,¶Ç¦^True
|
¤ñ¸û¹Bºâ¤l
|
½d¨Ò
|
¦WºÙ
|
µ²ªG
|
|
$a == $b
|
µ¥©ó
|
$aµ¥©ó$b®É¡A¤~·|¶Ç¦^True
|
|
$a != $b
|
¤£µ¥©ó
|
$a¤£µ¥©ó$b®É,¶Ç¦^True
|
|
$a < $b
|
¤p©ó
|
$a¤p©ó$b®É,¶Ç¦^True
|
|
$a > $b
|
¤j©ó
|
$a¤j©ó$b®É,¶Ç¦^True
|
|
$a <= $b
|
¤p©ó©Îµ¥©ó
|
$a¤p©ó©Îµ¥©ó$b®É,¶Ç¦^True
|
|
$a >= $b
|
¤j©ó©Îµ¥©ó
|
$a¤j©ó©Îµ¥©ó$b®É,¶Ç¦^True
|
- DBMaker
- DBMaker¦w¸Ë
DBMakerªº¦w¸Ë¬Û·í®e©ö¡ADBMaker±À¥X¥H¨Ó¨ü¨ì¬Û·í¼s¤j¨Ï¥ÎªÌªºÅwªï¡A¥Ñ©ó¨ä²³æ©ö¾Ç¡A¥\¯à±j¤j¡A¦A¥[¤W¤ä´©¤º«Ø¤¤^¤å¥þ¤åÀ˯Á¤Î´£¨ÑWeb ¶}µoªÌ¬Û·í¹ê¥Îªºfunction¡A±z·|ı±o³]p¤@ÓWeb¸ê®Æ®w¨t²Î¤£¦A¬O¤@Ó»»¤£¥i¤Îªº¹Ú·Q¤F¡C
- ±NDBMaker
3.5¥úºÐ
©ñ¤J±zªº¥úºÐ¾÷¤¤¡A¨Ãmount¨ìÀɮרt²Î¤W¡A¦pªG§A¤£ª¾¹D¦p¦ómount¥úºÐ¡A½Ð¸ß°Ý±zUNIX¨t²Î¥D¾÷ªº¨t²ÎºÞ²zû¡C
- ¥ý¦b±zªºLinux¨t²Î¤W«Ø¤@Ó¦W¬° dbmakerªº±b¸¹¡C
- ¨Ï¥Î dbmaker
³oÓ±b¸¹µn¿ý¨ì±zªºLinux¥D¾÷¡C
- °õ¦æ setup
µ{¦¡,±z¥i¥H¦b ¥úºÐ¤¤§ä¨ì¬Û¹ï©ó±z©Ò¨Ï¥Î Linux§@·~¨t²Îªº¥Ø¿ý(¤ñ¦p: \UNIX\Linux2.x86)¡C
- ¿í·Ó¦w¸Ëµ{¦¡ªº¤Þ¾É¾Þ§@§Y¥i¡C
¡@
- DBMaker ¤¶²Ð
DBMaker ¬°¥\¯à±j¤jªºÃöÁp¦¡¸ê®Æ®wºÞ²z¨t²Î (RDBMS, Relational
Database Management System)¡A¤ä´©µ²ºc¤Æ¬d¸ß»y¨¥ (SQL)¡AMicrosoft ¶}©ñ¦¡¸ê®Æ³sµ²¤¶± (ODBC)¡A©M¤º´O¦¡ SQL ¤§ C »y¨¥ (ESQL/C)¡C¥Ñ©ó DBMaker §¹¥þ¿í´`¶}©ñ¦¡ªº¬[ºc¡A¥H DBC ¬°°ò¥»µ{¦¡¤¶±¡A±z¥i¥H«Ü®e©ö¦a§Q¥Î¥«±¤W ODBC ¬Û®e À³¥Î³nÅé¨Ó¬d¸ß DBMaker ¸ê®Æ®wªº¤º®e¡A¥H¤Î§Q¥Î²{¦³ªº¶}µo¤u¨ãµo®i¸ê®Æ®wÀ³¥Îµ{¦¡¡C
DBMaker ¬O¤@®MÀu¶Vªº°Ó¥Î¸ê®Æ®wºÞ²z¨t²Î¡A¤£¶È¥\¯à§¹³Æ¥ý¶i¡A¦Ó¥B¾Þ§@¨Ï¥Î²³æ®e©ö¡ADBMaker Åý¨Ï¥ÎªÌ¥i¥H«Ü®e©ö¦a±qÓ¤H¹q¸£¤Wªº³æ¤@¥Î¤á¸ê®Æ®w¡A²@¤£¶O§j¦Ç¤§¤O§Y¥i¤É¯Å¨ì¤À´²¦¡¸ê®Æ®w¨t²Î ¡F¤£½×±z¨Ï¥Îªº¬O³æ¤@¥Î¤á¸ê®Æ®w©Î¬O°Ó¥Î¸ê®Æ ®w¡ADBMaker
³£´£¨Ñµ¹±z³Ì¥ý¶iªº¦w¥þ©Ê¡B§¹¾ã©Ê©M¥i¾a©ÊºÞ²z¡C
¥t¥~¡ADBMaker
ªº¸ó¥¥x¤ä´©¯S©Ê¡A«O»ÙµwÅé¤É¯Å®É¡A¥i¥HÂà´«¶¶ºZµLµh¤É¯Å¡A¬O±z§ë¸ê¦b
RDBMS ¤W¸`¬Ù®É¶¡¡B¤H¤O©Mª÷¿úªº³Ì¨Î«OÃÒ¡C
¡@
DBMaker ¦P®É¤]´£¨Ñ¤FÀu²§ªº¦h´CÅé¤ä´©¯à¤O¡A¥i¥HÅý±z¦s¨ú¡B¬d¸ß©M¾Þ§@¦UºØ¦h´CÅé¸ê®Æ¡C§Q¥Î DBMaker ©Ò´£¨Ñªº¤j«¬¤G¤¸ª«¥ó (BLOB, Binary large
object) ¸ê®Æ«¬§O¡A±zªº¦h´CÅé¸ê®Æ§ó¥i¥H§¹¥þ¨É¦³ DBMaker ¥ý¶iªº¦w¥þ©ÊºÞ²z©M¼ì·l¦^´_ (Crash/Recovery)
¥\¯à¡F¦Ó§Q¥ÎÀɮת«¥ó
(File Object) ¸ê®Æ«¬§O¡A «h¥i¥HÅý±zªº DBMaker ¸ê®Æ®w¤]¦³¯à¤OºÞ²z¥~³¡ÀɮסC
¦¹¥~¡A¥þ¤åÀ˯Á®É¥i¦Û©w§Æ±æ±Æ§ÇªºÄæ¦ì¡A¦b«Ø¥ß¥þ¤åÀ˯Á¯Á¤Þ®É¡A¥i¥H«ü©w¬Y¤@ÓÄæ¦ì¡A¥H«K¬d¸ß®É¨Ì¦¹Äæ¦ì¶¶§ÇÀ˯Á¥X²Å¦Xªº¸ê®Æ¡C·íÀ˯Á¥Xªº¸ê®Æ¶q¬Û·í¤j®É¡AµL»Ý¦A¸g±Æ§Ç°Ê§@¡A¥iª½±µ¨Ì©Ò«ü©wªºÄæ¦ì¶¶§Ç´`§Ç¨ú±oµ²ªG¡C¥þ¤åÀ˯Á¤]´£¨Ñ¤F³\¦h¤å¥ó³B²z¨ç¼Æ¡A´£¤É¤F¹ï¤å¥óªº³B²z¯à¤O¡C¥]¬A¡G¦b·j´M¦r¦ê«e«áµ¹¤©¼ÐÅÒ(tag)¡Bpºâ²Å¦X·j´M¦r¦êªºÁ`ӼơBÅã¥Ü¤å¥ó¤¤´M§ä¨ì·j´M¦r¦êªº¦ì¸m¡BÅã¥ÜBLOBÄæ¦ìªº¤j¤p¤ÎÅã¥ÜHTML¤å¥óªº¼ÐÃDµ¥¡C
- Dmconfig.ini
·íDBMakerªº¸ê®Æ®w¤ÞÀº°_°Ê®É©Î·í¨Ï¥ÎªÌ³sµ²¨ì¸ê®Æ®w®É¡ADBMaker¥²¶·°_©l¤@¨Ç°Ñ¼Æ¨Ó³]©w¥»¨¡C³o¨Ç°Ñ¼Æ±q¦WºÙ¬°dmconfig.iniªºASCII¤å¦r²ÕºAÀɤ¤Åª¨ú¥X¨Ó¡C³oÓ¤å¦rÀÉÀx¦s¤FDBMaker¥Î¨Ó³]©w¥»¨ªºÃöÁä¦r©M¨ä¹ï¬MÈ¡C¦]³oÓÀɮ׬O¤@ÓASCII§Î¦¡ªºÀɮסA°²¦p¦³»Ýn¡A¸ê®Æ®wºÞ²zû¥i¥H§Q¥Î¤å¦r½s¿è¾¹¨Ó§ïÅܳo¨Ç³]©wÈ¡C
¦b¤@¯ëªºª¬ªp¤U¡A¸ê®Æ®w±Ò°Ê®É¶·nŪ¨ú³o¨ÇÃöÁä¦rªº³]©wÈ¡C°²¦p¦b¸ê®Æ®w±Ò°Ê«á¤~§ïÅÜÃöÁä¦rªº³]©w±NµLªk§ïÅܨt²Î³]©w¡A¤U¤@¦¸ªº¸ê®Æ®w±Ò°Ê¤~·|¯u¥¿ªº¨ü¨ì¼vÅT¡C¦Ó¤@¨ÇÃöÁä¦r«h´£¨Ñ¨Ï¥ÎªÌ³sµ²¨ì¸ê®Æ®w©Ò¥Î¡C¨Ï¥ÎªÌ¥i¥H¦b¸ê®Æ®w±Ò°Ê«á¡A¤U¹F³sµ²«ü¥O«e§ïÅܳo¨ÇÃöÁä¦r¡C
²ÕºA°Ñ¼Æ¬°¼vÅTDBMakerªº®Ä¯àªº«n¦]¯À¡C©Ò¥H±zÀ³¸Óª`·N¨CÓ²ÕºA°Ñ¼Æªº¼vÅT¨Ã¹w¦ô¾A·íªºÈ¥H½T«ODBMakerªº®Ä¯à¡C§ÚÌ«ØÄ³¸ê®Æ®wºÞ²zû¦b³Æ¥÷¸ê®Æ®w®É±Ndmconfig.ini²ÕºAÀɤ@¦P³Æ¥÷¡C
¥t¥~¤@Ódmconfig.ini ªº«ÂI¬°¨ä¦ì¸m¡C¦bUNIX¨t²Î¤¤¡ADBMaker·|¥h¤U¦C¤TÓ¦a¤è·j´M dmconfig.ini¡C³o¤TÓ¦a¤è©MÀu¥ý¶¶§Ç¬°¡G
1.¥Ø«eªº¥Ø¿ý
2.Àô¹ÒÅܼÆDBMAKER©Ò«ü©wªº¥Ø¿ý
3.¨Ï¥ÎªÌdbmakerªº¥Ø¿ý¤Uªºdata¥Ø¿ý¡]~dbmaker/data¡^¡C
¦b·L³nªºµøµ¡¨t²Î¤U¡Admconfig.ini¥²¶·©ñ¸m©óµøµ¡ªº¦w¸Ë¥Ø¿ý¤U¡]³q±`¬° WINDOWS¡A°£«D¦b¦w¸Ëµøµ¡®É±z§ïÅܤF¹w³]È¡^·í±Ò°Ê¸ê®Æ®w®É¡ADBMaker·|¨ÌÄò±½´y¤Wz¤Tӥؿý¡]¦bµøµ¡¨t²Î«h¬° WINDOWS¥Ø¿ý¡^¡A·j´Mdmconfig.ini¨Ó§ä¨ì©M¸ê®Æ®w¬Û¹ïÀ³ªº¸`¦W¡C°²¦p§ä¨ì¤Fdmconfig.ini¤Î¬Û¹ïªº¸`¦W¡A¸Ó¸`¤ºªºÃöÁä¦r«h·|³Q¨Ï¥Î¡A§_«hDBMaker·|Ä~Äò·j´M¤Uӥؿýªºdmconfig.ini ª½¨ì¬Û²Åªº¸`¦W§ä¨ì¬°¤î¡C
ª`·N¡GY±zn¨Ï¥ÎPHP3³s±µ¦Ü¸ê®Æ®w,½Ð±N±zªºDmconfig.ini©ñ¸m¦b~dbmaker/data¥Ø¿ý¤U¡C
- «Ø¥ß¸ê®Æ®w
§Q¥Î¦øªA¾¹ºÞ²zû¥i¥HÅý±z«Ø¥ß¤@Ó¦h¨Ï¥ÎªÌ©Î³æ¨Ï¥ÎªÌªº¸ê®Æ®w¡A¦b«Ø¥ß¸ê®Æ®wªº®ÉÔ¡A±z¥i¥H«ü©w¸ê®Æ®wÀɮסBBLOB¤Î¤é»xÀɮתº¦WºÙ¤Î¤j¤p¡C
¸ê®Æ®w¦WºÙ
¦b¬°¸ê®Æ®w©R¦W¤§«e¡A±z¥²¶·¥ýª¾¹D¤U¦C¸ê®Æ®w¦WºÙªº©R¦W³W«h¡C
- ¸ê®Æ®w¦WºÙ³Ìªø¬°18Óbytes
- ¸ê®Æ®w¦WºÙ¥i¥H¥]§t¤¤^¤å¦r¥À¡B¼Æ¦r¤Î©³½u¡C
- ¸ê®Æ®w¦WºÙ¦³¤j¤p¼g°Ï¤À
- ¸ê®Æ®w¦WºÙ¤£¯à»P¥»°Ïdmconfig.iniÀɮפ¤¤w¸g¦s¦bªº°Ï¬q¦WºÙ(section)¤@¼Ë¡C
DBMaker¥i¥H¬O¤@Ó³B²z¤j¶q¸ê®Æ¥B¦h¨Ï¥ÎªÌªº¤j«¬¸ê®Æ®w¡A¤]¥i¥H¬O¤@Ó¤H¨Ï¥Îªº¤p«¬¸ê®Æ®w¡A±z¥i¥H«Ø¥ß¤@Ó³æ¨Ï¥ÎªÌªº¸ê®Æ®w¡A¦b¦P®É¶¡¤º¥u¯à¦³¤@¦ì¨Ï¥ÎªÌ³s±µ¦Ü¸ê®Æ®w¡C¨BÆJ¦p¤U¡G
§Q¥ÎSQL»yªk«Ø¥ß¸ê®Æ®w
»yªk:
CRETE DB dbname
½d¨Ò¡G
create db test
§Q¥ÎServer Manager«Ø¥ß¸ê®Æ®w
±z¥i¥H¦bDBMaker¤¤«Ø¥ß¦h¨Ï¥ÎªÌªº¸ê®Æ®w¡A¥¦¤¹³\¦b¦P®É¶¡¤º¦³¦h¦ì¨Ï¥ÎªÌ³s¦Ü¸ê®Æ®w¡C¦pªG±zn«Ø¥ßªº¬OClient/Server¦h¨Ï¥ÎªÌ¸ê®Æ®w¡A±z¥²¶·«ü©w¸ê®Æ®w¦øªA¾¹ªºIP¦ì§}¤Î³q°T°ð¸¹½X(Port Number)¡A¸Ô²Ó¸ê°T½Ð°Ñ¾\DBA¤â¥U¡C
«Ø¥ß¸ê®Æ®wªº¨BÆJ¦p¤U¡C
- ±q¥\¯àªí¤¤¿ï¨ú¡i¸ê®Æ®w(«Ø¥ß¡j¿ï¶µ¡A·|¥X²{¡§«Ø¥ß¸ê®Æ®w¡¨ªº¹ï¸Ü¤è¶ô¡C

- ¦b¡§¸ê®Æ®w¦WºÙ¡¨Äæ¦ì¤¤¿é¤J¸ê®Æ®w¦WºÙ¡C
- ¿ï¾Ü¸ê®Æ®w¦s©ñªº¦ì¸m
- ÂI¿ï¡§¸ê®Æ®w¥Ø¿ý¡¨Äæ¦ì¥k¤èªº¡u...¡v«ö¶s¡A¥X²{¡§¿ï¾Ü¥Ø¿ý¡¨¹ï¸Ü¤è¶ô¡C

- ¦b¤U¤èªººÏºÐ¾÷¦Cªí¤¤¿ï¾Ü¸ê®Æ®w±ý¦s©ñªººÏºÐ¾÷¦WºÙ¡C
- ¿ï¾Ü±ý¦s©ñªº¥Ø¿ý¡A¿ï¾Üªº¥Ø¿ý¦WºÙÁ`ªø«×³Ì¤j¬°80
Bytes¡C
- n«Ø¥ß¤@Ó·sªº¥Ø¿ý¡AÂI¨ú¡u«Ø¥ß·sªº¥Ø¿ý¡v«ö¶s¡A¥X²{¤@Ó¡§¿é¤J¥Ø¿ý¦WºÙ¡¨ªº¹ï¸Ü¤è¶ô¡C

- ¦b¹ï¸Ü¤è¶ô¤¤¿é¤Jn«Ø¥ßªº¥Ø¿ý¦WºÙ¡AÂI¿ï¡uOK¡v«ö¶s¡A·|Ãö³¬¦¹¹ï¸Ü¤è¶ô¨Ã¦^¨ì¡§¿ï¾Ü¥Ø¿ý¡¨¹ï¸Ü¤è¶ô¡C
- ÂI¨ú¡u¿ï¾Ü¡v«ö¶s¡A¦^¨ì¡§«Ø¥ß¸ê®Æ®w¡¨ªº¹ï¸Ü¤è¶ô¡A«ü©wªº¸ô®|¤]·|¥X²{¦b¹ï¸Ü¤è¶ô¤¤ªº¡§¸ê®Æ®w¥Ø¿ý¡¨Äæ¦ì¡C
- ³]©wClient/Server ¸ê®Æ®w©Î¬O³æ¨Ï¥ÎªÌ¸ê®Æ®w
- ²M°£¡§¦h¨Ï¥ÎªÌ¸ê®Æ®w¡¨®Ö¹ï¤è®Ø¡Aªí¥Ü«Ø¥ßªº¬O¤@Ó³æ¾÷ª©ªº¸ê®Æ®w
- ¿ï¨ú¡§¦h¨Ï¥ÎªÌ¸ê®Æ®w¡¨®Ö¹ï¤è®Ø¡Aªí¥Ü«Ø¥ßªº¬O¤@Ó¦h¨Ï¥ÎªÌªº¸ê®Æ®w¡A¨Ã¦b¤U¤èªºÄæ¦ì¤¤¿é¤J¦øªA¾¹ªº¦ì§}(IP Address)¤Î³q°T°ð½s¸¹(Port
Number)¡APort Number½d³ò¤¶©ó1025~65535¡C
- ÂI¿ï¡u«Ø¥ß¡v«ö¶s¡A¤§«á·|¥X²{¤@°T®§¤è¶ôÅã¥Ü¸ê®Æ®w¬O§_«Ø¥ß¦¨¥\¡C

«Ø¥ß³æ¾÷¸ê®Æ®w
1.START DB dbname username password
2.CONNECT TO dbname username password
½d¨Ò¡G
1. START DB employee SYSADM
2. CONNECT To employee SYSADM
¡@
±Ò°Ê¸ê®Æ®w¦øªA¾¹(dmserver «ü¥O)
dmserver -u username ¡Vp password database_name
½d¨Ò¡G±Ò°Êemployee¸ê®Æ®w
dmserver -u SYSADM employee
±Ò°Êclient/server¸ê®Æ®w¦øªA¾¹(Server Manager)
n±Ò°Ê¤ÎÃö³¬¸ê®Æ®w¦øªA¾¹¡A±z¥²¶·¨ã³Æ¸ê®Æ®w¨t²ÎºÞ²zªÌªºÅv¡A¦b«Ø¥ß¸ê®Æ®w¤§«á²Ä¤@¦¸±Ò°Ê¸ê®Æ®w®É¡A±z¥u¯à¨Ï¥ÎSYSADM¨Ï¥ÎªÌ¦WºÙ¨Ó±Ò°Ê¸ê®Æ®w¡A¦b±Ò°Ê¸ê®Æ®w¦øªA¾¹¤§«á¡A±z¥i¥H¥ß§Y³z¹LDBMaker´£¨Ñªº¤u¨ã(dmSQL¤ÎDBMaker¸ê®Æ®wºÞ²zû)³s±µ¨ì¸ê®Æ®w¡A¥Ñ©ó¦b¸ê®Æ®w«Ø¥ß¤§«á·|²£¥Í¤@Ó¨S¦³±K½XªºSYSADM¨Ï¥ÎªÌ¡A¨ä¨ã¦³¸ê®Æ®w³Ì°ªªºÅv¡A¦]¦¹«ØÄ³±z¦b«Ø¥ß·s¸ê®Æ®w¤§«á¥ß§Y³z¹LdmSQL©ÎDBMaker¸ê®Æ®wºÞ²zû¤u¨ã¨Ó³]©wSYSADMªº±K½X¡C
- ¿ï¾Ü¥\¯àªí¤¤ªº¡i¸ê®Æ®wà
±Ò°Ê/Ãö³¬¡j¿ï¶µ¡A·|¥X²{¡§±Ò°Ê/Ãö³¬¸ê®Æ®w¡¨ªº¹ï¸Ü¤è¶ô¡C

- ±q¡§¸ê®Æ®w¦WºÙ¡¨¤U©Ô¦¡¿ï³æ¤¤¿ï¾Ü±zn±Ò°Êªº¸ê®Æ®w¡C
- ¦b¡§¨Ï¥ÎªÌID¡¨¤Î¡§±K½X¡¨Äæ¦ì¤¤¿é¤J¨Ï¥ÎªÌ¦WºÙ¤Î±K½X¡C
4.ÂI¨ú¹ï¸Ü¤è¶ô¤¤ªº¡u±Ò°Ê¡v«ö¶s¡A·|¥X²{¡§±Ò°Ê¸ê®Æ®w¦¨¥\¡I¡¨ªº°T®§¤è¶ô¡C
5.ÂI¨ú°T®§¤è¶ô¤Wªº¡u½T©w¡v«ö¶s¡C
Ãö³¬¦øªA¾¹(dmSQL)
§Q¥Îdmsql³s¤W¸ê®Æ®w«á¡A¨Ï¥Î¤U¦Csq l«ü¥O¨ÓÃö³¬¸ê®Æ®w¦øªA¾¹¡C
TERMINATE dbname
Ãö³¬¸ê®Æ®w¦øªA¾¹(Server Manager)
- ¿ï¾Ü¥\¯àªí¤¤ªº¡i¸ê®Æ®wà
±Ò°Ê/Ãö³¬¡j¿ï¶µ¡A·|¥X²{¡§±Ò°Ê/Ãö³¬¸ê®Æ®w¡¨ªº¹ï¸Ü¤è¶ô¡C
- ±q¡§¸ê®Æ®w¦WºÙ¡¨¤U©Ô¦¡¿ï³æ¤¤¿ï¾Ü±znÃö³¬ªº¸ê®Æ®w¡C
- ¦b¡§¨Ï¥ÎªÌID¡¨¤Î¡§±K½X¡¨Äæ¦ì¤¤¿é¤J¨Ï¥ÎªÌ¦WºÙ¤Î±K½X¡C
- ÂI¨ú¡u±Ò°Ê¡v«ö¶s¡A·|¥X²{¤@°T®§¤è¶ôÅã¥Ü¬O§_Ãö³¬¦¨¥\¡C
- Äæ¦ì«¬ºA»¡©ú
|
¸ê®Æªø«×
|
½d³ò
|
ªø«×
|
|
CHAR(n)
|
1 £ n £
3992
blank padding
|
©T©wªø«×
n bytes
|
|
VARCHAR(n)
|
1 £ n £
3992
|
¥iÅܪø«×
¨Ì¹ê»Ú¸ê®Æªø«×
|
|
BINARY(n)
|
1 £ n £
3992
|
n bytes
|
|
SMALLINT
|
-32768 ~ 32767
|
2 bytes
|
|
INTEGER
|
-231 ~ 231-1
|
4 bytes
|
|
FLOAT
|
¡@ |
4 bytes
|
|
DOUBLE
|
¡@ |
8 bytes
|
|
DATE
|
1900/01/01 ~
|
4 bytes
|
|
TIME
|
’
(second )
|
4 bytes
|
|
TIMESTAMP
|
·L¬í
(micro-second)
|
11 bytes
|
|
DECIMAL(p,s)
|
1 £ p £
17, 0 £ s £
p
|
é
(p+1)/2ù +2 bytes
|
|
SERIAL(n)
|
-231 £ n £
231-1
¦Û°Ê¼W¥[
|
4 bytes
|
|
LONG VARCHAR
|
0 ~ 2G bytes
|
¡@ |
|
LONG VARBINARY
|
0 ~ 2G bytes
|
¡@ |
|
FILE
|
80 bytes
|
20 bytes
|
|
OID
|
fn.pn.sn
|
8 bytes
|
- ªí®æ¾Þ§@
«Ø¥ßªí®æ
»yªk¡G
CREATE
[TEMPORARY] TABLE table_name
( column_definition [, {next_column_definition}...] )
[IN tablespace_name]
[CHECK table_constraint]
[LOCK MODE {PAGE|TABLE|ROW}]
[FILLFACTOR fill_value] [NOCACHE]
½d¨Ò¡G
CREATE TABLE S (
2>S# CHAR(5) NOT NULL,
3> SNAME CHAR(20),
4> STATUS INTEGER,
5> CITY CHAR(15) );
§R°£ªí®æ
»yªk
DROP TABLE tablename
·s¼WÄæ¦ì
ALTER TABLE table_name ADD column_definition
[give_opt] [column_sequence]
give_opt = GIVE {literal | NULL | builtin-function |SEQUENTIAL}
column_sequence = {BEFORE column-name
| AFTER column-name}
§ó§ïªí®æµ²ºc
»yªk¡G
ALTER TABLE table_name MODIFY modify_column_definition
modify_column_definition =
{ column-name NAME TO new-column-name
| column-name TYPE TO data-type
| column-name NULL TO NOT NULL give-opt
| column-name DEFAULT TO default-val
| column-name CONSTRAINT TO CHECK expression
| column-name column-sequence
| column-name DROP DEFAULT
| column-name DROP CONSTRAINT
|column-name TO column-definition [give-opt][column-sequence]}
½d¨Ò¡G
ALTER TABLE employee MODIFY name TYPE TO CHAR(10);
- ¸ê®Æ¦s¨ú
´¡¤J¸ê®Æ(insert )
»yªk¡G
INSERT INTO table_name[(column_list)]
VALUES (values_list)
½d¨Ò¡G
dmSQL> INSERT INTO S VALUES
('S1','¥v±K´µ',20,'Û´°');
1 rows inserted
dmSQL> INSERT INTO S VALUES
('S2','±j´µ',10,'¤Ú¾¤');
1 rows inserted
dmSQL> INSERT INTO S VALUES
('S3','¥¬µÜ§J',30,'¤Ú¾¤');
1 rows inserted
dmSQL> INSERT INTO P(P#,CITY,WEIGHT)
2> VALUES ('P7','¶®¨å',24);
1 rows inserted
¡@
¸ê®Æ§ó·s(update)
»yªk¡G
UPDATE
table_name
SET column_name = expression [, column_name = expr ...]
[WHERE clause ]
½d¨Ò¡G
dmSQL> UPDATE S SET STATUS=35 WHERE S#='S5';
1 rows updated
dmSQL> UPDATE P SET COLOR='¶À', WEIGHT=WEIGHT+5 WHERE P#='P2';
1 rows updated
dmSQL> UPDATE S SET STATUS=STATUS*2
WHERE CITY='Û´°';
2 rows updated
¡@
¸ê®Æ§R°£(delete)
»yªk¡G
DELETE FROM table_name [WHERE clause ]
½d¨Ò¡G
dmSQL> DELETE FROM S WHERE S#='S5';
1 rows deleted
¸ê®Æ¬d¸ß(select)
»yªk¡G
SELECT
[ALL|DISTINCT] select_list
[INTO table_name]
FROM table_list
[WHERE clause]
[ORDER BY clause]
[GROUP BY clause]
[HAVING clause]
[FOR BROWSE]
½d¨Ò¡G
dmSQL> SELECT * FROM S;
dmSQL> SELECT P#,CITY,COLOR FROM P;
dmSQL>SELECT S# AS '¨Ñ_½s¸¹', STATUS FROM S;
dmSQL> SELECT S#,STATUS,SQRT(STATUS)*10,
2> ROUND(SQRT(STATUS)*10) FROM S;
dmSQL> SELECT S#,STATUS FROM
S WHERE CITY='¤Ú¾¤';
dmSQL> SELECT * FROM SP
2> WHERE QTY BETWEEN 300 AND 400;
dmSQL> SELECT P#,PNAME,CITY FROM P
2> WHERE CITY NOT IN ('Û´°','ù°¨');
dmSQL> SELECT S#,STATUS FROM
S WHERE CITY='¤Ú¾¤'
2> ORDER BY STATUS DESC;
¡@
- DBMaker¥þ¤åÀ˯Á¨ç¼Æ
HIGHLIGHT
»yªk:
HIGHLIGHT(text long varchar, BoolPatn
varchar(512), sensitive int, PreTag varchar(100), EndTag
Varchar(100) ) return long varchar.
|
|
parameter
|
type
|
Description
|
|
IN
|
text
|
LVC
|
source text
|
|
BoolPatn
|
CHAR
|
match pattern (can be Boolean expression pattern)
|
|
sensitive
|
INT
|
whether sensitive match
|
|
PreTag
|
CHAR
|
tag before pattern, NULL denote none
|
|
EndTag
|
CHAR
|
tag after pattern, NULL denote none
|
|
OUT
|
|
BLOB
|
text after highlighting the patterns
|
»¡©ú:
§ä¥X¨ãÀ˯ÁÃöÁä¦rªº¤å³¹¡A¨Ã¦bÀ˯ÁÃöÁä¦rªº«e«á¦Û°Ê¥[¤W«ü©wªº¤å¦r¡C
½d¨Ò¡G
§ä¥XcontentÄæ¦ì¤¤¦³Intel©ÎAMDªº¤å³¹¡A¨Ã±NIntel©ÎAMD¥Î¬õ¦â¼Ð¥Ü¡C
select highlight(content,¡¦Intel | AMD¡¦,0,¡¦<Font color="#FF0000">¡¦,¡¦</Font>¡¦)
from news where content match ¡¦Intel | AMD¡¦;
HITCOUNT
»yªk¡G
HITCOUNT(text
long varchar, BoolPatn VARCHAR(512), sensitive int) return int.
|
|
parameter
|
type
|
Description
|
|
IN
|
text
|
LVC
|
source text
|
|
BoolPatn
|
CHAR
|
match pattern (can be Boolean expression pattern)
|
|
sensitive
|
INT
|
whether sensitive match
|
|
OUT
|
|
INT
|
appearance times of search pattern
|
»¡©ú¡G
pºâ¤å³¹¤¤¸ÓÀ˯ÁÃöÁä¦r¥X²{ªº¦¸¼Æ¡C
½d¨Ò¡G
select
hitcount(content,'Intel|AMD',0), highlight(content,'Intel|AMD',0,¡¥<Font
color="#FF0000">¡¦,¡¦</Font>¡¦) from news where content match
'Intel|AMD' order by 1;
HITPOS
»yªk¡G
HITPOS(text
long varchar, BoolPatn varchar(512), sensitive int, n int, RetType
int) return int
|
|
parameter
|
type
|
description
|
|
IN
|
text
|
LVC
|
source text
|
|
BoolPatn
|
CHAR
|
match pattern (can be Boolean expression pattern)
|
|
sensitive
|
INT
|
whether sensitive match
|
|
n
|
INT
|
the n-th pattern (start at 1),
at most, n could be 10000 (MaxPosPtn)
|
|
RetType
|
INT
|
return position type
0: begin offset (default setting)
1: end offset
2: pattern length (endoff - begoff + 1)
3: begin offset (higer 24 bits) BINARY
OR end offset (lower 8 bits)
|
|
OUT
|
|
INT
|
get position information of the
n-th pattern found in text,
return 0 if n-th pattern is not found
|
»¡©ú¡G
§ä¥XÀ˯ÁÃöÁä¦r¦b¤å³¹¤¤¥X²{²Än¦¸ªº¦ì¸m¡C
½d¨Ò¡G
°²³]contentÄæ¦ì¤º®e¬°"a b A c"
HITPOS(content,'A',
1, 1, 0) = 5 ('A')
HITPOS(content,'A&B'
0, 2, 0) = 3 ('b')
HITPOS(content,'a|b|c', 0,
3, 0) = 5 ('A')
HITPOS(content,'!a&c' 0, 1, 0) = 7 ('c')
BLOBLEN
»yªk¡G
BLOBLEN
(object long varbinary) return int
|
|
parameter
|
type
|
Description
|
|
IN
|
object
|
LVB
|
Source blob
|
|
OUT
|
|
INT
|
get blob type data length
|
»¡©ú¡G
pºâ¬Y¤@ÓBLOBÄæ¦ìªºªø«×¡C
½d¨Ò¡G
select bloblen(content) from news
HTMLTITLE
»yªk¡G
HTMLTITLE (text long varchar) return varchar(1000)
|
|
parameter
|
type
|
Description
|
|
IN
|
object
|
LVB
|
Source HTML
data
|
|
OUT
|
|
varchar
|
Title string of HTML
|
»¡©ú¡G
§ä¥XHTML¤å³¹¤¤ªºTitle
½d¨Ò¡G
select htmltitle(content) from news
- PHP3+DBMaker
- ¨BÆJ»¡©ú

n¼g¤@¤ä¦s¨ú¸ê®Æ®wªºµ{¦¡¡A²Ä¤@¥ó¨Æ±¡´N¬O³s±µ¨ì±zªº¸ê®Æ®w¡AµM«á°õ¦æ±zªºSQL«ü¥O¡A°õ¦æªº¤è¦¡¦³¤GºØ¡A²Ä¤@ºØ¬O¥ýPrepare±zªºSQL»yªk¡AµM«á¥i¥H¤@ª½«ÂÐEXECUTE¡A²Ä¤GºØ¬OEXEC(PREPARE+EXECUTE)¡A¦b¨C¦¸°õ¦æ¤§«e¡A·|¦Û°Ê°µPREPAREªº°Ê§@¡C¦pªG¤@ÓSQL«ü¥O±`±`°õ¦æ¡A«ØÄ³±z¥ýPREPARE¡A¦AEXECUTE¡A³o¼Ë´N¤£¥²¨C¦¸°õ¦æ®É³£n«°µPREPAREªº°Ê§@¡CSQL°õ¦æ§¹²¦¤§«á¡A·|±Nµ²ªG¦s¨ì¤@ÓRESULT SET·í¤¤¡A¦bPHP3¤¤¡A±z¥i¥H¥Î¤@ÓÅܼƥh±µ¶Ç¦^¨ÓªºRESULT¡AµM«á¦A¨Ï¥ÎODBC_RESULT,ODBC_FETCH_ROW,ODBC_FETCH_INTO..µ¥Functions±N¸ê®ÆÅã¥Ü¥X¨Ó¡C
ª`·N¡GY±zn¨Ï¥ÎPHP3³s±µ¦Ü¸ê®Æ®w,½Ð±N±zªºDmconfig.ini©ñ¸m¦b~dbmaker/data¥Ø¿ý¤U¡C
- ³s±µ¸ê®Æ®w
ODBC_CONNECT
»yªk¡G
int odbc_connect(string dsn, string user, string password);
»¡©ú¡G³s±µ¨ì¸ê®Æ®w¡A¦pªG³s±µ¦¨¥\¡A¶Ç¦^³s±µªºconnect id(integer)¡A¥¢±Ñ«h¶Ç¦^0¡C
ODBC_CLOSE
»yªk¡G
void odbc_close(int
connection_id);
»¡©ú¡GÃö³¬«ü©wªºconnection id¡A¦pªG¥Ø«eªºconnection¤¤¦³transaction¥¿¦b°õ¦æ¡A¦¹«ü¥O«KµLªk°õ¦æ¡C
ODBC_CLOSEALL
»yªk¡G
void odbc_close_all(void);
»¡©ú¡GÃö³¬©Ò¦³ªºconnection¡A¦pªGconnection¦³transaction¥¿¦b°õ¦æ¡AµLªk°õ¦æ¦¹«ü¥O¡C
¡@
½d¨Ò¡G
<HTML>
<TITLE>
<HEAD>ODBC_CLOSE_ALL</HEAD>
</TITLE>
<body>
<?
$Cn=ODBC_connect("PHP3TEST","SYSADM","");
$Cn1=ODBC_connect("EXDM30","SYSADM","");
echo "Connected Cn and Cn1<P>";
odbc_close_all();
echo "CLOSE ALL<p>";
$Rs=ODBC_EXEC($Cn,"Select * from TestSample");
$Rs1=ODBC_EXEC($Cn1,"Select * from Card");
if($Rs){echo "Cn Connection not Close<P>";}
else{echo "Cn Connection Close<P>";}
if($Rs1){echo "Cn1 Connection not Close<P>";}
else{echo "Cn1 Connection Close<P>";}
echo $HOME;
?>
</body>
¡@
- ³]©w¥æ©ö³B²z
ODBC_AUTOCOMMIT
»yªk¡G
int odbc_autocommit(int connection_id, int [OnOff])
»¡©ú¡G³]©w¬Y¤@connection id¤¤ªºtransaction¬O§_¬°¦Û°Êcommit¡A·íOnOff¬°true®É¡Aªí¥Ü¸Óconnection¤¤ªº©Ò¦³«ü¥O¬Ò¬°autocommit¡C
ODBC_COMMIT
»yªk¡G
int odbc_commit(int
connection_id)
»¡©ú¡Gcommit
©Ò«ü©wconnection¤¤°õ¦æªºtransaction¡C¦¨¥\¶Ç¦^True,¥¢±Ñ¶Ç¦^False¡C
ODBC_ROLLBACK
»yªk¡G
int odbc_rollback(int connection_id)
»¡©ú¡G¦^´_©Ò©wªºconnection¤¤ªºtransaction¡A¦¨¥\¶Ç¦^True,¥¢±Ñ¶Ç¦^False¡C
½d¨Ò¡G
<HTML>
<HEAD>
<TITLE><h1>Test AutoCommit Execute Time <h1></TITLE>
</HEAD>
<BODY>
<?
$conn=ODBC_CONNECT("PHP3TEST","SYSADM","");
if ($conn){
if(ODBC_EXEC($conn,"Create table T1(c1 int,c2 char(10))"))
{
ODBC_AUTOCOMMIT($conn,1);
¡@¡@¡@¡@¡@//do some insert
ODBC_AUTOCOMMIT($conn,0);
//do some insert
}
ODBC_EXEC($conn,"Drop table T1");
ODBC_COMMIT($conn);
}
ODBC_CLOSE($conn);
?>
</BODY>
</HTML>
¡@
- °õ¦æSQL«ü¥O
ODBC_PREPARE
»yªk¡G
int odbc_prepare(int
connection_id, string query_string)
»¡©ú¡G·Ç³Æ§Y±Nn°õ¦æªºSQL«ü¥O¡A¦pªG¦¨¥\¡A¶Ç¦^¤@Óresult identifierªºid¡A³oÓresult identifier¤§«á¥i¥H¨Ï¥ÎODBC_EXECUTE¨Ó°õ¦æ¡C
ODBC_EXECUTE
»yªk¡G
int odbc_execute(int
result_id, array [parameters_array])
»¡©ú¡G°õ¦æ¤@ÓODBC_PREPARE§¹«áªºSQL«ü¥O¡A¦pªG¦¨¥\¡A¶Ç¦^True¡A¥¢±Ñ¶Ç¦^False¡A¦pªG¤§«ePREPAREªºSQL«ü¥O»Ýnµ¹°Ñ¼Æ¡A¨Ï¥Îarray[parameters_array]¡C
ODBC_EXEC
»yªk¡G
int odbc_exec(int
connection_id, string query_string)
»¡©ú¡GPREPARE¤Î°õ¦æSQL«ü¥O¡Aµ¥©ó¤§«eªºODBC_PREPARE+ODBC_EXECUTE¡A°õ¦æ¦¨¥\¶Ç¦^True¡A¥¢±Ñ¶Ç¦^False¡C
ODBC_DO
»yªk¡G
string odbc_do(int conn_id,
string query)
»¡©ú¡G»PODBC_EXEC¬Û¦P
¡@
½d¨Ò¡G
<HTML>
<HEAD>
</HEAD>
<BODY>
<?
$conn=ODBC_connect("PHP3TEST","SYSADM","");
if($conn)
{
$res=odbc_prepare($conn,"insert into TestODBC values(?,?,?)");
$param[0]=3;
$param[1]="test";
$param[2]="insert";
odbc_execute($res,$param);
odbc_free_result($res);
$res=odbc_EXEC($conn,"select * from TestODBC");
echo "insert a row (1,test,insert) into table";
echo odbc_result_all($res);
odbc_free_result($res);
odbc_close($conn);
}
?>
</BODY>
</HTML>
¡@
- Â^¨ú¸ê®Æ
ODBC_CURSOR
»yªk¡G
string odbc_cursor(int result_id);
»¡©ú¡G¨ú±o¤@ÓCURSORNAME¡A¦pªG¦¨¥\¡A·|°w¹ï«ü©wªºreuslt_id¶Ç¦^¤@ÓCURSOR NAME¡C
½d¨Ò
<HTML>
<HEAD>
<TITLE>ODBC FUNCTION TEST</TITLE>
</HEAD>
<BODY>
<h5>Test Cursor of deleting odd records and update even records
c2char to 'handy'</h5>
<?
$conn=odbc_connect("PHP3TEST","SYSADM","");
if($conn)
{
Error_Reporting(0);
odbc_exec($conn,"drop table PHP3CURSOR");
odbc_exec($conn,"Create table PHP3CURSOR(c1Int int ,c2Char char(10))");
for($i=0;$i < 50;$i++)
{
$resexec=odbc_exec($conn,"insert into PHP3CURSOR values($i,'Test')");
ODBC_COMMIT($conn);
odbc_free_result($resexec);
}
$res=odbc_exec($conn,"select * from PHP3CURSOR");
echo odbc_result_all($res),"rows<p><p>";
odbc_free_result($res);
$res=odbc_exec($conn,"select * from PHP3CURSOR for update of c2Char");
$Cursor=odbc_cursor($res);
$CurUpdate=odbc_prepare($conn,"update PHP3CURSOR set c2Char=? where
current of $Cursor");
$CurDelete=odbc_prepare($conn,"Delete from PHP3CURSOR where current
of $Cursor");
if($CurUpdate and $CurDelete)
{
while(odbc_fetch_row($res))
{
if(odbc_result($res,1)%2==0)
{
$str=chop(odbc_result($res,2)) . "*";
$param[0]=$str;
odbc_execute($CurUpdate,$param);
}
else
{
odbc_execute($CurDelete);
}
odbc_commit($conn);
}
}
odbc_free_result($res);
$res=odbc_exec($conn,"select * from PHP3CURSOR");
echo odbc_result_all($res),"rows<p><p>";
odbc_free_result($res);
odbc_close($conn);
}
?>
</BODY>
</HTML>¡G
ODBC_RESULT_ALL
»yªk¡G
int odbc_result_all(int
result_id, string [format])
»¡©ú¡G±N¥Ø«eªºRESULT
SET ¥HHTMLªºªí®æ§Î¦¡Åã¥Ü¥X¨Ó¡Aodbc_result_all·|¦L¥X¥HODBC_EXEC²£¥Íªºresult id ¤¤ªº©Ò¦³¸ê®Æ¡C
½d¨Ò¡G
<HTML>
<HEAD>
<TITAL><H1>TEST ODBC FUNCTION</H1></TITAL>
</HEAD>
<BODY>
<?
$CONN=ODBC_CONNECT("PHP3TEST","SYSADM","");
IF($CONN)
{
$RES=ODBC_EXEC($CONN,"SELECT * FROM TestODBC");
$STRRS=ODBC_RESULT_ALL($RES);
ECHO $STRRS;
ECHO "¦æ¸ê®Æ";
}
?>
</BODY>
</HTML>
ODBC_FETCH_INTO
»yªk¡G
int odbc_fetch_into(int
result_id, int [rownumber], array result_array)
»¡©ú¡GFETCH¤@µ§¸ê®Æ¨ì¤@Óarray¤¤¡A¦¨¥\«h¶Ç¦^¸Óµ§¸ê®Æ¦bresult set¤¤ªº¦ì¸m¡A¥¢±Ñ¶Ç¦^False¡C¥Î¨Ó±µ¦¬Èªºarray¥²¶·¨Ï¥ÎPASSING BY REFERENCEªº¤è¦¡¨Ó±µ¦¬¶Ç¦^¨Óªº¸ê®Æ¡Aarrayªºindex±q0¶}©l¡C
½d¨Ò¡G
<HTML>
<TITLE>
<HEAD>ODBC_fetch_into,ODBC_fetch_row</HEAD>
</TITLE>
<body>
<?
$Cn=ODBC_connect("PHP3TEST","SYSADM","");
if($Cn)
{
$Rs=odbc_exec($Cn,"select * from TestODBC");
$Colnum=odbc_num_fields($Rs);
while(odbc_fetch_into($Rs,&$Str))
{
for($i=0;$i<3;$i++)
{
echo $Str[$i] , "===== ";
}
echo "<P>";
}
}
?>
</body>
</HTML>
ODBC_FETCH_ROW
»yªk¡G
int odbc_fetch_row(int
result_id, int [row_number])
»¡©ú¡G¤@¦¸FETCH¤@µ§¸ê®Æ¡AODBC_FETCH_ROW¥i¥Hfetch¸g¥ÑODBC_DO©ÎODBC_EXEC²£¥Íresult set¤¤ªº¸ê®Æ¡A¦pªG¨S¦³«ü©wrow_number¡AODBC_FETCH_ROW·|fetch¤U¤@µ§¸ê®Æ¡C
ODBC_RESULT
»yªk¡G
string odbc_result(int result_id, mixed field)
»¡©ú¡G¨ú±o¤@µ§¸ê®Æ¤¤ªº¬Y¤@ÓÄæ¦ìÈ¡Amixed filed¥i¥H¬OÄæ¦ì¦WºÙ©Î¬OÄæ¦ì¦ì¸m,Äæ¦ì¦ì¸m±q1¶}©l¡C
ODBC_RUM_ROWS
»yªk¡G
int odbc_num_rows(int
result_id);
»¡©ú¡G¨ú±oRESULT
SET¤¤¦@¦³´Xµ§¸ê®Æ¡A¦pªGSQL¬°insert¡Bupdate¡Bdelete¡A¶Ç¦^ªº¬O¼vÅTªºµ§¼Æ¡A¦pªG¬°select¡A¶Ç¦^ªº¬Oselectªºµ§¼Æ¡C¤j³¡¥÷ªºdatabase¡A¦bselect ¤§«á¡AµLªk¨Ï¥ÎODBC_RUM_ROWS¨Ó¨ú±oselectªºµ§¼Æ¡C
ODBC_NUM_FIELDS
»yªk¡G
int odbc_num_fields(int
result_id)
»¡©ú¡G¨ú±oRESULT
SETÄæ¦ìªº¼Æ¥Ø
DOBC_FIELD_NUM
»yªk¡G
int odbc_fieldnum(int
result_id, string field_name)
»¡©ú¡G¶Ç¦^«ü©wªºÄæ¦ì¦bRESULT
SET¤¤±Æ§Çªº¦ì¸m
ODBC_FIELD_NAME
»yªk¡G
string odbc_fieldname(int
result_id, int field_number)
»¡©ú¡G¶Ç¦^RESULT
SET¤¤²Äfield_numberÓÄæ¦ìªºÄæ¦ì¦WºÙ
ODBC_FIELD_TYPE
»yªk¡G
string odbc_field_type(int
result_id, mixed field)
»¡©ú¡G¶Ç¦^RESULT
SET¤¤¬Y¤@ÓÄæ¦ìªºÄæ¦ì«¬ºA¡C
ODBC_FREE_RESULT
»yªk¡G
int odbc_free_result(int
result_id)
»¡©ú¡GÃö³¬RESULT
SET
¡@
½d¨Ò¡G
<HTML>
<head>
<title>hanly test</title>
</head>
<BODY>
<h5>DBMaker Test</h5>
<?
if(isset($dbuser))
{
$conn=odbc_connect($dsn,$dbuser,$dbpwd);
if (!$conn)
{;
?><h5> Can't connect to Database</h5><?
}
else
{
?><h5>connect to database success!!!</h5><?
$res=ODBC_EXEC($conn,"select * from TestODBC");
$numfields=odbc_num_fields($res);
?><p><p><p><p><?
?><table><tr><td><h5>number of row</h5></td><?
for($jnum=1;$jnum<=$numfields;$jnum++)
{
$str=odbc_field_name($res,$jnum);
?><td><h5><?echo $str ?></h5></td><?
}
?></tr><tr><?
?><tr><td><h5></h5></td><?
for($jnum=1;$jnum<=$numfields;$jnum++)
{
$str=odbc_field_type($res,$jnum);
?><td><h5><?echo $str ?></h5></td><?
}
?></tr><tr><?
?><tr><td><h5></h5></td><?
for($jnum=1;$jnum<=$numfields;$jnum++)
{
$str=odbc_field_len($res,$jnum);
?><td><h5><?echo $str ?></h5></td><?
}
?></tr><tr><?
¡@
¡@
¡@
$num=0;
while(odbc_fetch_row($res))
{
$num++;
?><td><h5>row <? echo $num;?></h5></td><?
for($k=1;$k<=$numfields;$k++)
{
$str=odbc_result($res,$k);
?><td><h5><? echo $str ?></h5></td><?
}
?></tr><?
}
?><p></table><?
odbc_free_result($res);
odbc_close($conn);
}
}
else
{
?><form action=ODBC_Result.php3 method=post>
<table border=0>
<tr><td>Database (DSN): </td><td><input
type=text name=dsn value="PHP3TEST"></td></tr>
<tr><td>User: </td><td><input type=text
name=dbuser></td></tr>
<tr><td>Password: </td><td><input type=password
name=dbpwd></td></tr>
</table>
<input type=submit value=connect>
<?
}
?>
</BODY>
[ Back To Manuals Index ]
|