用PHP制作creatable表格,发一个简单的PHP的MYSQL数据库管理工具,刚学PHP制作的试验品...

许多BUG,功能简单,代码简单,适用新手交流

创建数据表

.td{width:100px;overflow:hidden}

$mydatabase="数据库名称";//写上你的数据库名称

$con =

mysql_connect('127.0.0.1','数据库名称','数据库密码');//连接MySQL

if(!$con) die(" 系统连接失败!"); header('conten-type:text/html;charset=utf-8');

mysql_query("set names utf8");

mysql_select_db($mydatabase) or

die("数据库连接失败!");//选择数据库 if($_GET['tableName']!=null)

{

$mytable =

$_GET['tableName'];

echo

"当前选择的显示数据表是:
".$mytable." 

href='?deltable=".$mytable."'>删除该表

 

href='?inZiduan=".$mytable."'>插入字段


"

;

}

//删除表

if($_GET['deltable']!=null)

{

$deltable=$_GET['deltable'];

mysql_query("DROP TABLE $deltable");

echo"成功删除表".$deltable;

}

//插入字段

if (isset($_POST['action'])

&&$_POST['action']

== 'submitted') {

$myzhi= $_POST['zhi'];

$mytbname= $_POST['tbname'];

$mychangdu=

$_POST['changdu'];

$myleixin= $_POST['leixin'];

$myifnull= $_POST['ifnull'];

$myifunique=

$_POST['ifunique'];

if ($myleixin=="DOUBLE"or $myleixin=="FLOAT"or

$myleixin=="BOOL"or $myleixin=="TIME"or

$myleixin=="DATE"or $myleixin=="DATETIME"or

$myleixin=="TEXT"or

$myleixin=="TINYBLOB"or

$myleixin=="TINYTEXT"or

$myleixin=="BLOB"or

$myleixin=="MEDIUMBLOB"or

$myleixin=="MEDIUMTEXT"or

$myleixin=="LONGBLOB"or

$myleixin=="LONGTEXT")

{

//某些字符串类型不用定义长度值

$result=mysql_query("ALTER TABLE $mytbname

ADD $myzhi $myleixin $myifnull $myifunique ");

if ($result){

echo "插入字段 ok
";

//exit;

}

else{

die(

mysql_error());

}

}

//其他else

elseif ($mychangdu==""and ($myleixin=="CHAR"or

$myleixin=="VARCHAR"or

$myleixin=="VARBINARY"))

{

//如果VARBINARY、CHAR、VARCHAR三项没有指明长度值时,则长度默认为250位

$result=mysql_query("ALTER TABLE $mytbname

ADD $myzhi $myleixin(250) $myifnull $myifunique ");

if ($result){

echo "插入字段 ok
";

//exit;

}

else{

die(

mysql_error());

}

}

elseif ($myleixin=="BINARY")

{

//BINARY 类型默认为1位

$result=mysql_query("ALTER TABLE $mytbname

ADD $myzhi $myleixin(1) $myifnull $myifunique ");

if ($result){

echo "插入字段 ok
";

//exit;

}

else{

die(

mysql_error());

}

}

elseif ($myleixin=="YEAR" or $myleixin=="TINYINT")

{

//类型为年份的默认为4位

$result=mysql_query("ALTER TABLE $mytbname

ADD $myzhi $myleixin(4) $myifnull $myifunique ");

if ($result){

echo "插入字段 ok
";

}

else{

die(

mysql_error());

}

}

elseif($myleixin=="BIGINT")

{

//BIGINT长整型默认为20位

$result=mysql_query("ALTER TABLE $mytbname

ADD $myzhi $myleixin(20) $myifnull $myifunique ");

if ($result){

echo "插入字段 ok
";

}

else{

die(

mysql_error());

}

}

elseif($myleixin=="SMALLINT")

{

//SMALLINT短整型默认为6位

$result=mysql_query("ALTER TABLE $mytbname

ADD $myzhi $myleixin(6) $myifnull $myifunique ");

if ($result){

echo "插入字段 ok
";

}

else{

die(

mysql_error());

}

}

elseif($myleixin=="MEDIUMINT")

{

//MEDIUMINT型默认为9位

$result=mysql_query("ALTER TABLE $mytbname

ADD $myzhi $myleixin(9) $myifnull $myifunique ");

if ($result){

echo "插入字段 ok
";

}

else{

die(

mysql_error());

}

}

elseif($myleixin=="INT")

{

//INT整型默认为11位

$result=mysql_query("ALTER TABLE $mytbname

ADD $myzhi $myleixin(11) $myifnull $myifunique ");

if ($result){

echo "插入字段 ok
";

}

else{

die(

mysql_error());

} }

elseif($myleixin=="TIMESTAMP")

{

//类型为时间TIMESTAMP的默认自动添加年月日与时间

$result=mysql_query("ALTER TABLE $mytbname

ADD $myzhi TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP ");

if ($result){

echo "插入字段 ok
";

}

else{

die(

mysql_error());

} }

else

{

$result=mysql_query("ALTER TABLE $mytbname

ADD $myzhi $myleixin($mychangdu) $myifnull $myifunique ");

if ($result){

echo "插入字段 ok
";

}

else{

die(

mysql_error());

}

}

}

//删除字段

if($_GET['delzi']!=null)

{

$delzi=

$_GET['delzi'];

$fromtb=

$_GET['fromtb'];

$result=mysql_query("ALTER TABLE $fromtb DROP COLUMN

$delzi");

if($result){

echo "delete ok
";

//exit;

}

else{

die(

mysql_error());}

}

//修改字段

if (isset($_POST['action'])

&&$_POST['action']

== 'sub')

{ $myOldzhi= $_GET['oldName'];

$myNewzhi= $_POST['zhi'];

$mytbname= $_POST['tbname'];

$mychangdu=

$_POST['changdu'];

$myleixin= $_POST['leixin'];

$myifNull=$_POST['ifnull'];

$myifDefault=

$_POST['ifDefault'];

$myifunique=

$_POST['ifunique'];

$result=mysql_query("ALTER TABLE $mytbname CHANGE $myOldzhi $myNewzhi

$myleixin");

if ($myleixin=="DOUBLE" or

$myleixinY=="FLOAT"or $myleixin=="BOOL"or$myleixin=="TIME" or

$myleixin=="DATE" or $myleixin=="DATETIME" or $myleixin=="TEXT" or

$myleixin=="TINYBLOB" or $myleixin=="TINYTEXT" or $myleixin=="BLOB"

or $myleixin=="MEDIUMBLOB" or $myleixin=="MEDIUMTEXT" or $myleixin=="LONGBLOB" or

$myleixin=="LONGTEXT")

{

//某些字符串类型不用定义长度值

$result=mysql_query("ALTER

TABLE $mytbname MODIFY COLUMN $myNewzhi $myleixin $myifNull");

if ($result){

echo "修改字段 ok
";

//exit;

}

else{

die(

mysql_error());

}

}

//其他else

elseif ($mychangdu==""and ($myleixin=="CHAR"or

$myleixin=="VARCHAR"or

$myleixin=="VARBINARY"))

{

//如果VARBINARY、CHAR、VARCHAR三项没有指明长度值时,则长度默认为250位

$result=mysql_query("ALTER TABLE $mytbname MODIFY COLUMN $myNewzhi

$myleixin(250) $myifNull");

if ($result){

echo "修改字段 ok
";

//exit;

}

else{

die(

mysql_error());

}

}

elseif ($myleixin=="BINARY")

{

//BINARY 类型默认为1位

$result=mysql_query("ALTER TABLE $mytbname MODIFY COLUMN $myNewzhi

$myleixin(1) $myifNull");

if ($result){

echo "修改字段 ok
";

//exit;

}

else{

die(

mysql_error());

}

}

elseif ($myleixin=="YEAR" or $myleixin=="TINYINT")

{

//类型为年份的默认为4位

$result=mysql_query("ALTER TABLE $mytbname MODIFY COLUMN $myNewzhi

$myleixin(4) $myifNull");

if ($result){

echo "修改字段 ok
";

}

else{

die(

mysql_error());

}

}

elseif($myleixin=="BIGINT")

{

//BIGINT长整型默认为20位

$result=mysql_query("ALTER TABLE $mytbname MODIFY COLUMN $myNewzhi

$myleixin(20) $myifNull");

if ($result){

echo "修改字段 ok
";

}

else{

die(

mysql_error());

}

}

elseif($myleixin=="SMALLINT")

{

//SMALLINT短整型默认为6位

$result=mysql_query("ALTER TABLE $mytbname MODIFY COLUMN $myNewzhi

$myleixin(6) $myifNull");

if ($result){

echo "修改字段 ok
";

}

else{

die(

mysql_error());

}

}

elseif($myleixin=="MEDIUMINT")

{

//MEDIUMINT型默认为9位

$result=mysql_query("ALTER TABLE $mytbname MODIFY COLUMN $myNewzhi

$myleixin(9) $myifNull");

if ($result){

echo "修改字段 ok
";

}

else{

die(

mysql_error());

}

}

elseif($myleixin=="INT")

{

//INT整型默认为11位

$result=mysql_query("ALTER TABLE $mytbname MODIFY COLUMN $myNewzhi

$myleixin(11) $myifNull");

if

($result){

echo "修改字段 ok
";

}

else{

die(

mysql_error());

} }

elseif($myleixin=="TIMESTAMP")

{

//类型为时间TIMESTAMP的默认自动添加年月日与时间

$result=mysql_query("ALTER TABLE $mytbname MODIFY COLUMN $myNewzhi

TIMESTAMP NOT NULL DEFAULT CURRENT_TIMESTAMP");

if ($result){

echo "修改字段 ok
";

}

else{

die(

mysql_error());

} }

else

{

$result=mysql_query("ALTER TABLE $mytbname MODIFY COLUMN $myNewzhi

$myleixin($mychangdu) $myifNull");

if ($result){

echo "修改字段 ok
";

}

else{

die(

mysql_error());

}

}

///修改字段的默认值

if ($myifDefault!=''){

$result=mysql_query("ALTER TABLE $mytbname

ALTER $myNewzhi SET DEFAULT

'$myifDefault'");

if (!$result){

die(mysql_error());

}

}

///修改字段的唯一索引

if ($myifunique!=''){

$result=mysql_query("ALTER TABLE $mytbname

ADD UNIQUE ($myNewzhi)");

if (!$result){

echo "唯一索引添加失败";

die(mysql_error());

}

}

else{

$result=mysql_query("ALTER TABLE $mytbname DROP INDEX

$myNewzhi");

if (!$result){

echo "唯一索引撤销失败";

die(mysql_error());

}

}

//

}

if($_GET['xiugai']!=null)

{

$xiugaiID= $_GET['xiugai'];

$fromtb=

$_GET['fromtb'];

$i = 0 ;

$sqlColumns = mysql_query ( "SHOW COLUMNS FROM $fromtb" , $con )

or die ( "错误或该表不存在" ) ;

// 统计字段总数

$columnNum = mysql_num_rows ( $sqlColumns) ;

// 循环每个字段

while ( $i < $columnNum ) {

// 获取每个字段信息信息

$colname = mysql_fetch_array ($sqlColumns) ;

if ($i==$xiugaiID){

//echo

"
".$colname['Field'].$colname['Type'].$colname['Null'].$colname['Key'].$colname['Default'].$colname['Extra']; $Nam=$colname['Field'];

$Defa=$colname['Default'];

$patterns ="/\d+/";

$patterns2 ="^[a-za-z]+$";

$strs=$colname['Type'];

preg_match_all($patterns,$strs,$arr);

//print_r($arr);

//echo $arr[0][0];//显示字段数据类型长度

$lei=str_replace($arr[0][0],"",$strs);

$lei=str_replace("()","",$lei);

//echo $lei;

}

// 答应详细字段信息

//print_r ( $colname ) ;

//echo

"
".$colname[2].$sqlColumns;

$i ++ ;

}

//输出一段HTML代码使用下面

echo<<

action="?action=sub&oldName={$Nam}"

method="POST">

name="tbname"type="text"class="inpu"

value="{$_GET['fromtb']}"

readonly="true">

字段名称 

type="text"class="inpu" value="{$Nam}">


字段长度 

name="changdu"type="text"class="inpu"

value="{$arr[0][0]}">


数据类型 

name="leixin">

value="{$lei}">{$lei}

value="CHAR">CHAR

value="VARCHAR">VARCHAR

value="VARBINARY">VARBINARY

value="TINYINT">TINYINT

value="INT">INT

value="BIGINT">BIGINT

value="SMALLINT">SMALLINT

value="MEDIUMINT">MEDIUMINT

value="TIME">TIME

value="DATE">DATE

value="YEAR">YEAR

value="DATETIME">DATETIME

value="TIMESTAMP">TIMESTAMP

value="TEXT">TEXT

value="MEDIUMTEXT">MEDIUMTEXT

value="TINYTEXT">TINYTEXT

value="LONGTEXT">LONGTEXT

value="BOOL">BOOL

value="BINARY">BINARY

value="FLOAT">FLOAT

value="DOUBLE">DOUBLE

value="TINYBLOB">TINYBLOB

value="BLOB">BLOB

value="MEDIUMBLOB">MEDIUMBLOB

value="LONGBLOB">LONGBLOB


允许空值 

name="ifnull">

value>允许

selected value="NOT

NULL">不允许


唯一索引

value="">否

value="UNIQUE">是


默认值;

value="{$Defa}">

value="sub">

name="submit"type="submit"value="确定修改字段"class="bo">

EOT;

}

//插入字段的表单

if($_GET['inZiduan']!=null)

{

$inZtable=$_GET['inZiduan'];

//输出一段HTML代码使用下面

echo<<

method="POST">

color="#0000FF">插入新字段


已经存在默认字段ID字段:id    

1起步,长自动+1,长度为11位的默认主键

name="tbname"type="text"class="inpu"

value="{$_GET['inZiduan']}"

readonly="true">

字段名称 

name="zhi"type="text"class="inpu">


字段长度 

name="changdu"type="text"class="inpu">


数据类型 

name="leixin">

value="CHAR">CHAR

value="VARCHAR">VARCHAR

value="VARBINARY">VARBINARY

value="TINYINT">TINYINT

value="INT">INT

value="BIGINT">BIGINT

value="SMALLINT">SMALLINT

value="MEDIUMINT">MEDIUMINT

value="TIME">TIME

value="DATE">DATE

value="YEAR">YEAR

value="DATETIME">DATETIME

value="TIMESTAMP">TIMESTAMP

value="TEXT">TEXT

value="MEDIUMTEXT">MEDIUMTEXT

value="TINYTEXT">TINYTEXT

value="LONGTEXT">LONGTEXT

value="BOOL">BOOL

value="BINARY">BINARY

value="FLOAT">FLOAT

value="DOUBLE">DOUBLE

value="TINYBLOB">TINYBLOB

value="BLOB">BLOB

value="MEDIUMBLOB">MEDIUMBLOB

value="LONGBLOB">LONGBLOB


允许空值 

name="ifnull">

value>允许

selected value="NOT

NULL">不允许


唯一索引

value="">否

value="UNIQUE">是

value="submitted">

name="submit"type="submit"value="确定插入字段"class="bo">

EOT;

}

//新建表

if($_POST['NewTable']!=null)

{

$mNewTable=$_POST['NewTable'];

//mysql_select_db($mydatabase, $con);

$sql = "CREATE TABLE $mNewTable (

id int NOT

NULL AUTO_INCREMENT, PRIMARY KEY(id)

);";

mysql_query($sql,$con);

echo"数据表".$mNewTable."成功建立
";

}

if($_GET['Creatable']!=null)

{

echo<<

action="?action=yes"method="post"name="checkForm"id="checkForm">新建表名称:

name="NewTable"type="text"id="NewTable">

name="sendtj"type="hidden"value="1">

type="submit"name="button"id="button"value="提交">

EOT;

}

$result = mysql_query("SHOW TABLES"); echo "【

href='?Creatable=yes'>新建表

】数据库所有数据表:";

while($row = mysql_fetch_array($result))

{

echo "

href='?tableName=".$row['0']."'>"

. $row['0'] .

"

 ";

}

mysql_free_result($result);

//下面显示某个表的所有字段属性

if($_GET['tableName']!=null)

{

$sql ="SHOW COLUMNS FROM $mytable";

if($res = mysql_query($sql)){

while($column = mysql_fetch_assoc($res)){

$columns[] = $column;

// $fields =

$column['Field'];//将数据表名称返回到数组中.

//echo

"$fields";

}

}

echo "

with=400

border='1'>

字段类型 允许空值主键默认值其他管理 ";

$i=0;

foreach($columns as $column)

{ echo<<

href='?xiugai={$i}&fromtb=$mytable'>{$column['Field']}

class="td">{$column['Type']}

class="td">{$column['Null']}

class="td">{$column['Key']}

class="td">{$column['Default']}

class="td">{$column['Extra']}

href='?delzi={$column['Field']}&fromtb=$mytable'>删除

EOT;

$i++;

}

echo "

";

}

mysql_close($con);

?>

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是cCallFunc2.cls的源代码: ``` VERSION 1.0 CLASS BEGIN MultiUse = -1 'True END Attribute VB_Name = "cCallFunc2" Attribute VB_GlobalNameSpace = False Attribute VB_Creatable = True Attribute VB_PredeclaredId = False Attribute VB_Exposed = False Option Explicit Private Declare Function LoadLibrary Lib "kernel32" Alias "LoadLibraryA" (ByVal lpLibFileName As String) As Long Private Declare Function FreeLibrary Lib "kernel32" (ByVal hLibModule As Long) As Long Private Declare Function GetProcAddress Lib "kernel32" (ByVal hModule As Long, ByVal lpProcName As String) As Long Private Declare Sub CopyMemory Lib "kernel32" Alias "RtlMoveMemory" (Destination As Any, Source As Any, ByVal Length As Long) Private Declare Function CallWindowProc Lib "user32" Alias "CallWindowProcA" (ByVal lpPrevWndFunc As Long, ByVal hWnd As Long, ByVal Msg As Long, ByVal wParam As Long, ByVal lParam As Long) As Long Private Const CC_FASTCALL As Long = 0 Private Const CC_CDECL As Long = 1 Private Const CC_STDCALL As Long = 2 Private hLib As Long Private m_pFunc As Long Private m_nCallConv As Long Public Property Get CallConv() As Long CallConv = m_nCallConv End Property Public Property Let CallConv(ByVal nCallConv As Long) m_nCallConv = nCallConv End Property Public Sub LoadLibrary(ByVal sLibName As String) hLib = LoadLibrary(sLibName) End Sub Public Sub FreeLibrary() FreeLibrary hLib End Sub Public Function GetFuncAddr(ByVal sFuncName As String) As Long Dim s As String * 256 s = sFuncName GetFuncAddr = GetProcAddress(hLib, s) m_pFunc = GetFuncAddr End Function Public Function CallFunc(ParamArray Params()) As Long Dim nParamCount As Long nParamCount = UBound(Params) + 1 Select Case m_nCallConv Case CC_FASTCALL Call CallFuncFast(m_pFunc, nParamCount, Params(0), Params(1), Params(2), Params(3)) Case CC_CDECL Call CallFuncCDecl(m_pFunc, nParamCount, Params(0), Params(1), Params(2), Params(3), Params(4), Params(5), Params(6), Params(7)) Case CC_STDCALL Call CallFuncStdCall(m_pFunc, nParamCount, Params(0), Params(1), Params(2), Params(3), Params(4), Params(5), Params(6), Params(7)) End Select CallFunc = Params(0) End Function Private Sub CallFuncFast(ByVal pFunc As Long, ByVal nParamCount As Long, ParamArray Params()) Dim nRegCount As Long Dim nStackCount As Long Dim nParamIndex As Long Dim nArgIndex As Long ' Determine number of arguments that can be passed in registers nRegCount = IIf(nParamCount > 0, 1, 0) + IIf(nParamCount > 1, 1, 0) + IIf(nParamCount > 2, 1, 0) + IIf(nParamCount > 3, 1, 0) ' Push arguments onto stack nStackCount = nParamCount - nRegCount For nParamIndex = nRegCount To nParamCount - 1 CopyMemory ByVal VarPtr(Params(nParamIndex)), ByVal VarPtr(nArgIndex), 4 nArgIndex = nArgIndex + 4 Next nParamIndex ' Call function Select Case nRegCount Case 0 CallWindowProc pFunc, 0, 0, 0, 0 Case 1 CallWindowProc pFunc, 0, Params(0), 0, 0 Case 2 CallWindowProc pFunc, 0, Params(0), Params(1), 0 Case 3 CallWindowProc pFunc, 0, Params(0), Params(1), Params(2) Case 4 CopyMemory ByVal VarPtr(Params(0)), ByVal VarPtr(0), 4 CopyMemory ByVal VarPtr(Params(1)), ByVal VarPtr(4), 4 CopyMemory ByVal VarPtr(Params(2)), ByVal VarPtr(8), 4 CopyMemory ByVal VarPtr(Params(3)), ByVal VarPtr(12), 4 CallWindowProc pFunc, 0, Params(0), Params(1), Params(2) End Select End Sub Private Sub CallFuncCDecl(ByVal pFunc As Long, ByVal nParamCount As Long, ParamArray Params()) Dim nParamIndex As Long Dim nArgIndex As Long ' Push arguments onto stack For nParamIndex = 0 To nParamCount - 1 CopyMemory ByVal VarPtr(Params(nParamIndex)), ByVal VarPtr(nArgIndex), 4 nArgIndex = nArgIndex + 4 Next nParamIndex ' Call function CallWindowProc pFunc, 0, Params(0), Params(1), Params(2), Params(3), Params(4), Params(5), Params(6), Params(7) End Sub Private Sub CallFuncStdCall(ByVal pFunc As Long, ByVal nParamCount As Long, ParamArray Params()) Dim nParamIndex As Long Dim nArgIndex As Long ' Push arguments onto stack For nParamIndex = nParamCount - 1 To 0 Step -1 CopyMemory ByVal VarPtr(Params(nParamIndex)), ByVal VarPtr(nArgIndex), 4 nArgIndex = nArgIndex + 4 Next nParamIndex ' Call function CallWindowProc pFunc, 0, Params(0), Params(1), Params(2), Params(3), Params(4), Params(5), Params(6), Params(7) End Sub ``` 请注意,这只是一个简单的示例,cCallFunc2.cls的实现方式可能会因DLL函数调用约定的不同而有所不同。建议您查阅更多的资料来了解如何使用这个类来动态调用DLL函数。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值