Skip to content
GitLab
Explore
Sign in
Register
Primary navigation
Search or go to…
Project
I
ISPConfig 3
Manage
Activity
Members
Labels
Plan
Issues
Issue boards
Milestones
Wiki
Code
Merge requests
Repository
Branches
Commits
Tags
Repository graph
Compare revisions
Snippets
Build
Pipelines
Jobs
Pipeline schedules
Artifacts
Deploy
Releases
Model registry
Operate
Environments
Monitor
Incidents
Analyze
Value stream analytics
Contributor analytics
CI/CD analytics
Repository analytics
Model experiments
Help
Help
Support
GitLab documentation
Compare GitLab plans
Community forum
Contribute to GitLab
Provide feedback
Keyboard shortcuts
?
Snippets
Groups
Projects
Show more breadcrumbs
lolo888
ISPConfig 3
Commits
a123dfe7
Commit
a123dfe7
authored
16 years ago
by
tbrehm
Browse files
Options
Downloads
Patches
Plain Diff
Updated mysql database library to support replication.
parent
a78dfc66
No related branches found
No related tags found
No related merge requests found
Changes
1
Hide whitespace changes
Inline
Side-by-side
Showing
1 changed file
server/lib/classes/db_mysql.inc.php
+424
-418
424 additions, 418 deletions
server/lib/classes/db_mysql.inc.php
with
424 additions
and
418 deletions
server/lib/classes/db_mysql.inc.php
+
424
−
418
View file @
a123dfe7
<?php
<?php
/*
/*
Copyright (c) 200
7
, Till Brehm, projektfarm Gmbh
Copyright (c) 200
5
, Till Brehm, projektfarm Gmbh
All rights reserved.
All rights reserved.
Redistribution and use in source and binary forms, with or without modification,
Redistribution and use in source and binary forms, with or without modification,
...
@@ -28,462 +27,469 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
...
@@ -28,462 +27,469 @@ NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE,
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
*/
class
db
class
db
{
var
$dbHost
=
""
;
// hostname of the MySQL server
var
$dbName
=
""
;
// logical database name on that server
var
$dbUser
=
""
;
// database authorized user
var
$dbPass
=
""
;
// user's password
var
$dbCharset
=
""
;
// what charset comes and goes to mysql: utf8 / latin1
var
$linkId
=
0
;
// last result of mysql_connect()
var
$queryId
=
0
;
// last result of mysql_query()
var
$record
=
array
();
// last record fetched
var
$autoCommit
=
1
;
// Autocommit Transactions
var
$currentRow
;
// current row number
var
$errorNumber
=
0
;
// last error number
var
$errorMessage
=
""
;
// last error message
var
$errorLocation
=
""
;
// last error location
var
$show_error_messages
=
false
;
// constructor
function
db
()
{
{
var
$dbHost
=
""
;
// hostname of the MySQL server
global
$conf
;
var
$dbName
=
""
;
// logical database name on that server
$this
->
dbHost
=
$conf
[
"db_host"
];
var
$dbUser
=
""
;
// database authorized user
$this
->
dbName
=
$conf
[
"db_database"
];
var
$dbPass
=
""
;
// user's password
$this
->
dbUser
=
$conf
[
"db_user"
];
var
$linkId
=
0
;
// last result of mysql_connect()
$this
->
dbPass
=
$conf
[
"db_password"
];
var
$queryId
=
0
;
// last result of mysql_query()
$this
->
dbCharset
=
$conf
[
"db_charset"
];
var
$record
=
array
();
// last record fetched
//$this->connect();
var
$autoCommit
=
1
;
// Autocommit Transactions
}
var
$currentRow
;
// current row number
var
$errorNumber
=
0
;
// last error number
var
$errorMessage
=
""
;
// last error message
var
$errorLocation
=
""
;
// last error location
var
$show_error_messages
=
false
;
// error handler
// constructor
function
updateError
(
$location
)
function
db
()
{
$this
->
errorNumber
=
mysql_errno
();
$this
->
errorMessage
=
mysql_error
();
$this
->
errorLocation
=
$location
;
if
(
$this
->
errorNumber
&&
$this
->
show_error_messages
)
{
{
echo
(
'<br /><b>'
.
$this
->
errorLocation
.
'</b><br />'
.
$this
->
errorMessage
);
flush
();
global
$conf
;
$this
->
dbHost
=
$conf
[
"db_host"
];
$this
->
dbName
=
$conf
[
"db_database"
];
$this
->
dbUser
=
$conf
[
"db_user"
];
$this
->
dbPass
=
$conf
[
"db_password"
];
//$this->connect();
}
}
}
function
connect
()
// error handler
{
function
updateError
(
$location
)
if
(
$this
->
linkId
==
0
)
{
{
$this
->
linkId
=
mysql_connect
(
$this
->
dbHost
,
$this
->
dbUser
,
$this
->
dbPass
);
$this
->
errorNumber
=
mysql_errno
();
if
(
!
$this
->
linkId
)
$this
->
errorMessage
=
mysql_error
();
$this
->
errorLocation
=
$location
;
if
(
$this
->
errorNumber
&&
$this
->
show_error_messages
)
{
{
$this
->
updateError
(
'DB::connect()<br />mysql_connect'
);
echo
(
'<br /><b>'
.
$this
->
errorLocation
.
'</b><br />'
.
$this
->
errorMessage
);
return
false
;
flush
()
;
}
}
$this
->
queryId
=
@
mysql_query
(
'SET NAMES '
.
$this
->
dbCharset
,
$this
->
linkId
);
}
}
return
true
;
}
function
query
(
$queryString
)
function
connect
()
{
if
(
!
$this
->
connect
())
{
{
return
false
;
if
(
$this
->
linkId
==
0
)
}
{
if
(
!
mysql_select_db
(
$this
->
dbName
,
$this
->
linkId
))
$this
->
linkId
=
mysql_connect
(
$this
->
dbHost
,
$this
->
dbUser
,
$this
->
dbPass
);
{
if
(
!
$this
->
linkId
)
$this
->
updateError
(
'DB::connect()<br />mysql_select_db'
);
{
return
false
;
$this
->
updateError
(
'DB::connect()<br />mysql_connect'
);
}
return
false
;
$this
->
queryId
=
@
mysql_query
(
$queryString
,
$this
->
linkId
);
}
$this
->
updateError
(
'DB::query('
.
$queryString
.
')<br />mysql_query'
);
}
if
(
!
$this
->
queryId
)
return
true
;
{
return
false
;
}
}
$this
->
currentRow
=
0
;
return
$this
->
queryId
;
}
// returns all records in an array
function
query
(
$queryString
)
function
queryAllRecords
(
$queryString
)
{
if
(
!
$this
->
query
(
$queryString
))
{
{
return
false
;
if
(
!
$this
->
connect
())
{
return
false
;
}
if
(
!
mysql_select_db
(
$this
->
dbName
,
$this
->
linkId
))
{
$this
->
updateError
(
'DB::connect()<br />mysql_select_db'
);
return
false
;
}
$this
->
queryId
=
@
mysql_query
(
$queryString
,
$this
->
linkId
);
$this
->
updateError
(
'DB::query('
.
$queryString
.
')<br />mysql_query'
);
if
(
!
$this
->
queryId
)
{
return
false
;
}
$this
->
currentRow
=
0
;
return
$this
->
queryId
;
}
}
$ret
=
array
();
while
(
$line
=
$this
->
nextRecord
())
// returns all records in an array
function
queryAllRecords
(
$queryString
)
{
{
$ret
[]
=
$line
;
if
(
!
$this
->
query
(
$queryString
))
{
return
false
;
}
$ret
=
array
();
while
(
$line
=
$this
->
nextRecord
())
{
$ret
[]
=
$line
;
}
return
$ret
;
}
}
return
$ret
;
}
// returns one record in an array
// returns one record in an array
function
queryOneRecord
(
$queryString
)
function
queryOneRecord
(
$queryString
)
{
if
(
!
$this
->
query
(
$queryString
)
||
$this
->
numRows
()
==
0
)
{
{
return
false
;
if
(
!
$this
->
query
(
$queryString
)
||
$this
->
numRows
()
==
0
)
{
return
false
;
}
return
$this
->
nextRecord
();
}
}
return
$this
->
nextRecord
();
}
// returns the next record in an array
// returns the next record in an array
function
nextRecord
()
function
nextRecord
()
{
$this
->
record
=
mysql_fetch_assoc
(
$this
->
queryId
);
$this
->
updateError
(
'DB::nextRecord()<br />mysql_fetch_array'
);
if
(
!
$this
->
record
||
!
is_array
(
$this
->
record
))
{
{
return
false
;
$this
->
record
=
mysql_fetch_assoc
(
$this
->
queryId
);
$this
->
updateError
(
'DB::nextRecord()<br />mysql_fetch_array'
);
if
(
!
$this
->
record
||
!
is_array
(
$this
->
record
))
{
return
false
;
}
$this
->
currentRow
++
;
return
$this
->
record
;
}
}
$this
->
currentRow
++
;
return
$this
->
record
;
}
// returns number of rows returned by the last select query
// returns number of rows returned by the last select query
function
numRows
()
function
numRows
()
{
{
return
mysql_num_rows
(
$this
->
queryId
);
return
mysql_num_rows
(
$this
->
queryId
);
}
// returns mySQL insert id
function
insertID
()
{
return
mysql_insert_id
(
$this
->
linkId
);
}
// Check der variablen
// deprecated, now use quote
function
check
(
$formfield
)
{
return
$this
->
quote
(
$formfield
);
}
// Check der variablen
function
quote
(
$formfield
)
{
if
(
!
$this
->
connect
()){
$this
->
updateError
(
'WARNING: mysql_connect: Used addslashes instead of mysql_real_escape_string'
);
return
addslashes
(
$formfield
);
}
}
return
mysql_real_escape_string
(
$formfield
);
// returns mySQL insert id
}
function
insertID
()
{
// Check der variablen
return
mysql_insert_id
(
$this
->
linkId
);
function
unquote
(
$formfield
)
{
return
stripslashes
(
$formfield
);
}
function
toLower
(
$record
)
{
if
(
is_array
(
$record
))
{
foreach
(
$record
as
$key
=>
$val
)
{
$key
=
strtolower
(
$key
);
$out
[
$key
]
=
$val
;
}
}
}
return
$out
;
}
// Check der variablen
// deprecated, now use quote
function
check
(
$formfield
)
function
insert
(
$tablename
,
$form
,
$debug
=
0
)
{
{
return
$this
->
quote
(
$formfield
);
if
(
is_array
(
$form
)){
foreach
(
$form
as
$key
=>
$value
)
{
$sql_key
.
=
"
$key
, "
;
$sql_value
.
=
"'"
.
$this
->
check
(
$value
)
.
"', "
;
}
$sql_key
=
substr
(
$sql_key
,
0
,
strlen
(
$sql_key
)
-
2
);
$sql_value
=
substr
(
$sql_value
,
0
,
strlen
(
$sql_value
)
-
2
);
$sql
=
"INSERT INTO
$tablename
("
.
$sql_key
.
") VALUES ("
.
$sql_value
.
")"
;
if
(
$debug
==
1
)
echo
"SQL-Statement: "
.
$sql
.
"<br><br>"
;
$this
->
query
(
$sql
);
if
(
$debug
==
1
)
echo
"mySQL Error Message: "
.
$this
->
errorMessage
;
}
}
function
update
(
$tablename
,
$form
,
$bedingung
,
$debug
=
0
)
{
if
(
is_array
(
$form
)){
foreach
(
$form
as
$key
=>
$value
)
{
$insql
.
=
"
$key
= '"
.
$this
->
check
(
$value
)
.
"', "
;
}
$insql
=
substr
(
$insql
,
0
,
strlen
(
$insql
)
-
2
);
$sql
=
"UPDATE
$tablename
SET "
.
$insql
.
" WHERE
$bedingung
"
;
if
(
$debug
==
1
)
echo
"SQL-Statement: "
.
$sql
.
"<br><br>"
;
$this
->
query
(
$sql
);
if
(
$debug
==
1
)
echo
"mySQL Error Message: "
.
$this
->
errorMessage
;
}
}
function
closeConn
()
{
}
function
freeResult
()
{
}
function
delete
()
{
}
function
Transaction
(
$action
)
{
//action = begin, commit oder rollback
}
/*
$columns = array(action => add | alter | drop
name => Spaltenname
name_new => neuer Spaltenname, nur bei 'alter' belegt
type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob
typeValue => Wert z.B. bei Varchar
defaultValue => Default Wert
notNull => true | false
autoInc => true | false
option => unique | primary | index)
*/
function
createTable
(
$table_name
,
$columns
)
{
$index
=
""
;
$sql
=
"CREATE TABLE
$table_name
("
;
foreach
(
$columns
as
$col
){
$sql
.
=
$col
[
"name"
]
.
" "
.
$this
->
mapType
(
$col
[
"type"
],
$col
[
"typeValue"
])
.
" "
;
if
(
$col
[
"defaultValue"
]
!=
""
)
$sql
.
=
"DEFAULT '"
.
$col
[
"defaultValue"
]
.
"' "
;
if
(
$col
[
"notNull"
]
==
true
)
{
$sql
.
=
"NOT NULL "
;
}
else
{
$sql
.
=
"NULL "
;
}
if
(
$col
[
"autoInc"
]
==
true
)
$sql
.
=
"auto_increment "
;
$sql
.
=
","
;
// key Definitionen
if
(
$col
[
"option"
]
==
"primary"
)
$index
.
=
"PRIMARY KEY ("
.
$col
[
"name"
]
.
"),"
;
if
(
$col
[
"option"
]
==
"index"
)
$index
.
=
"INDEX ("
.
$col
[
"name"
]
.
"),"
;
if
(
$col
[
"option"
]
==
"unique"
)
$index
.
=
"UNIQUE ("
.
$col
[
"name"
]
.
"),"
;
}
$sql
.
=
$index
;
$sql
=
substr
(
$sql
,
0
,
-
1
);
$sql
.
=
")"
;
$this
->
query
(
$sql
);
return
true
;
}
/*
$columns = array(action => add | alter | drop
name => Spaltenname
name_new => neuer Spaltenname, nur bei 'alter' belegt
type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob
typeValue => Wert z.B. bei Varchar
defaultValue => Default Wert
notNull => true | false
autoInc => true | false
option => unique | primary | index)
*/
function
alterTable
(
$table_name
,
$columns
)
{
$index
=
""
;
$sql
=
"ALTER TABLE
$table_name
"
;
foreach
(
$columns
as
$col
){
if
(
$col
[
"action"
]
==
'add'
)
{
$sql
.
=
"ADD "
.
$col
[
"name"
]
.
" "
.
$this
->
mapType
(
$col
[
"type"
],
$col
[
"typeValue"
])
.
" "
;
}
elseif
(
$col
[
"action"
]
==
'alter'
)
{
$sql
.
=
"CHANGE "
.
$col
[
"name"
]
.
" "
.
$col
[
"name_new"
]
.
" "
.
$this
->
mapType
(
$col
[
"type"
],
$col
[
"typeValue"
])
.
" "
;
}
elseif
(
$col
[
"action"
]
==
'drop'
)
{
$sql
.
=
"DROP "
.
$col
[
"name"
]
.
" "
;
}
if
(
$col
[
"action"
]
!=
'drop'
)
{
if
(
$col
[
"defaultValue"
]
!=
""
)
$sql
.
=
"DEFAULT '"
.
$col
[
"defaultValue"
]
.
"' "
;
if
(
$col
[
"notNull"
]
==
true
)
{
$sql
.
=
"NOT NULL "
;
}
else
{
$sql
.
=
"NULL "
;
}
}
if
(
$col
[
"autoInc"
]
==
true
)
$sql
.
=
"auto_increment "
;
$sql
.
=
","
;
// Check der variablen
// key Definitionen
function
quote
(
$formfield
)
if
(
$col
[
"option"
]
==
"primary"
)
$index
.
=
"PRIMARY KEY ("
.
$col
[
"name"
]
.
"),"
;
{
if
(
$col
[
"option"
]
==
"index"
)
$index
.
=
"INDEX ("
.
$col
[
"name"
]
.
"),"
;
if
(
!
$this
->
connect
()){
if
(
$col
[
"option"
]
==
"unique"
)
$index
.
=
"UNIQUE ("
.
$col
[
"name"
]
.
"),"
;
$this
->
updateError
(
'WARNING: mysql_connect: Used addslashes instead of mysql_real_escape_string'
);
return
addslashes
(
$formfield
);
}
return
mysql_real_escape_string
(
$formfield
);
}
}
}
$sql
.
=
$index
;
// Check der variablen
$sql
=
substr
(
$sql
,
0
,
-
1
);
function
unquote
(
$formfield
)
{
//die($sql);
return
stripslashes
(
$formfield
);
$this
->
query
(
$sql
);
return
true
;
}
function
dropTable
(
$table_name
)
{
$this
->
check
(
$table_name
);
$sql
=
"DROP TABLE '"
.
$table_name
.
"'"
;
return
$this
->
query
(
$sql
);
}
// gibt Array mit Tabellennamen zurück
function
getTables
(
$database_name
=
''
)
{
if
(
$database_name
==
''
)
$database_name
=
$this
->
dbName
;
$result
=
mysql_list_tables
(
$database_name
);
for
(
$i
=
0
;
$i
<
mysql_num_rows
(
$result
);
$i
++
)
{
$tb_names
[
$i
]
=
mysql_tablename
(
$result
,
$i
);
}
}
return
$tb_names
;
}
function
toLower
(
$record
)
{
if
(
is_array
(
$record
))
{
// gibt Feldinformationen zur Tabelle zurück
foreach
(
$record
as
$key
=>
$val
)
{
/*
$key
=
strtolower
(
$key
);
$columns = array(action => add | alter | drop
$out
[
$key
]
=
$val
;
name => Spaltenname
}
name_new => neuer Spaltenname, nur bei 'alter' belegt
}
type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob
return
$out
;
typeValue => Wert z.B. bei Varchar
}
defaultValue => Default Wert
notNull => true | false
autoInc => true | false
function
insert
(
$tablename
,
$form
,
$debug
=
0
)
option => unique | primary | index)
{
if
(
is_array
(
$form
)){
foreach
(
$form
as
$key
=>
$value
)
*/
{
$sql_key
.
=
"
$key
, "
;
function
tableInfo
(
$table_name
)
{
$sql_value
.
=
"'"
.
$this
->
check
(
$value
)
.
"', "
;
}
global
$go_api
,
$go_info
;
$sql_key
=
substr
(
$sql_key
,
0
,
strlen
(
$sql_key
)
-
2
);
// Tabellenfelder einlesen
$sql_value
=
substr
(
$sql_value
,
0
,
strlen
(
$sql_value
)
-
2
);
if
(
$rows
=
$go_api
->
db
->
queryAllRecords
(
"SHOW FIELDS FROM "
.
$table_name
)){
foreach
(
$rows
as
$row
)
{
$name
=
$row
[
0
];
$default
=
$row
[
4
];
$key
=
$row
[
3
];
$extra
=
$row
[
5
];
$isnull
=
$row
[
2
];
$type
=
$row
[
1
];
$column
=
array
();
$sql
=
"INSERT INTO
$tablename
("
.
$sql_key
.
") VALUES ("
.
$sql_value
.
")"
;
$column
[
"name"
]
=
$name
;
if
(
$debug
==
1
)
echo
"SQL-Statement: "
.
$sql
.
"<br><br>"
;
//$column["type"] = $type;
$this
->
query
(
$sql
);
$column
[
"defaultValue"
]
=
$default
;
if
(
$debug
==
1
)
echo
"mySQL Error Message: "
.
$this
->
errorMessage
;
if
(
stristr
(
$key
,
"PRI"
))
$column
[
"option"
]
=
"primary"
;
}
if
(
stristr
(
$isnull
,
"YES"
))
{
}
$column
[
"notNull"
]
=
false
;
}
else
{
function
update
(
$tablename
,
$form
,
$bedingung
,
$debug
=
0
)
$column
[
"notNull"
]
=
true
;
{
}
if
(
$extra
==
'auto_increment'
)
$column
[
"autoInc"
]
=
true
;
if
(
is_array
(
$form
)){
foreach
(
$form
as
$key
=>
$value
)
{
$insql
.
=
"
$key
= '"
.
$this
->
check
(
$value
)
.
"', "
;
}
$insql
=
substr
(
$insql
,
0
,
strlen
(
$insql
)
-
2
);
$sql
=
"UPDATE
$tablename
SET "
.
$insql
.
" WHERE
$bedingung
"
;
if
(
$debug
==
1
)
echo
"SQL-Statement: "
.
$sql
.
"<br><br>"
;
$this
->
query
(
$sql
);
if
(
$debug
==
1
)
echo
"mySQL Error Message: "
.
$this
->
errorMessage
;
}
}
public
function
closeConn
()
{
if
(
$this
->
linkId
)
{
mysql_close
(
$this
->
linkId
);
return
true
;
}
else
{
return
false
;
}
}
public
function
freeResult
(
$query
)
{
if
(
mysql_free_result
(
$query
))
{
return
true
;
}
else
{
return
false
;
}
}
function
delete
()
{
}
function
Transaction
(
$action
)
{
//action = begin, commit oder rollback
}
/*
$columns = array(action => add | alter | drop
name => Spaltenname
name_new => neuer Spaltenname, nur bei 'alter' belegt
type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob
typeValue => Wert z.B. bei Varchar
defaultValue => Default Wert
notNull => true | false
autoInc => true | false
option => unique | primary | index)
*/
function
createTable
(
$table_name
,
$columns
)
{
$index
=
""
;
$sql
=
"CREATE TABLE
$table_name
("
;
foreach
(
$columns
as
$col
){
$sql
.
=
$col
[
"name"
]
.
" "
.
$this
->
mapType
(
$col
[
"type"
],
$col
[
"typeValue"
])
.
" "
;
if
(
$col
[
"defaultValue"
]
!=
""
)
$sql
.
=
"DEFAULT '"
.
$col
[
"defaultValue"
]
.
"' "
;
if
(
$col
[
"notNull"
]
==
true
)
{
$sql
.
=
"NOT NULL "
;
}
else
{
$sql
.
=
"NULL "
;
}
if
(
$col
[
"autoInc"
]
==
true
)
$sql
.
=
"auto_increment "
;
$sql
.
=
","
;
// key Definitionen
if
(
$col
[
"option"
]
==
"primary"
)
$index
.
=
"PRIMARY KEY ("
.
$col
[
"name"
]
.
"),"
;
if
(
$col
[
"option"
]
==
"index"
)
$index
.
=
"INDEX ("
.
$col
[
"name"
]
.
"),"
;
if
(
$col
[
"option"
]
==
"unique"
)
$index
.
=
"UNIQUE ("
.
$col
[
"name"
]
.
"),"
;
}
$sql
.
=
$index
;
$sql
=
substr
(
$sql
,
0
,
-
1
);
$sql
.
=
")"
;
$this
->
query
(
$sql
);
return
true
;
}
/*
$columns = array(action => add | alter | drop
name => Spaltenname
name_new => neuer Spaltenname, nur bei 'alter' belegt
type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob
typeValue => Wert z.B. bei Varchar
defaultValue => Default Wert
notNull => true | false
autoInc => true | false
option => unique | primary | index)
*/
function
alterTable
(
$table_name
,
$columns
)
{
$index
=
""
;
$sql
=
"ALTER TABLE
$table_name
"
;
foreach
(
$columns
as
$col
){
if
(
$col
[
"action"
]
==
'add'
)
{
$sql
.
=
"ADD "
.
$col
[
"name"
]
.
" "
.
$this
->
mapType
(
$col
[
"type"
],
$col
[
"typeValue"
])
.
" "
;
}
elseif
(
$col
[
"action"
]
==
'alter'
)
{
$sql
.
=
"CHANGE "
.
$col
[
"name"
]
.
" "
.
$col
[
"name_new"
]
.
" "
.
$this
->
mapType
(
$col
[
"type"
],
$col
[
"typeValue"
])
.
" "
;
}
elseif
(
$col
[
"action"
]
==
'drop'
)
{
$sql
.
=
"DROP "
.
$col
[
"name"
]
.
" "
;
}
if
(
$col
[
"action"
]
!=
'drop'
)
{
if
(
$col
[
"defaultValue"
]
!=
""
)
$sql
.
=
"DEFAULT '"
.
$col
[
"defaultValue"
]
.
"' "
;
if
(
$col
[
"notNull"
]
==
true
)
{
$sql
.
=
"NOT NULL "
;
}
else
{
$sql
.
=
"NULL "
;
}
if
(
$col
[
"autoInc"
]
==
true
)
$sql
.
=
"auto_increment "
;
$sql
.
=
","
;
// key Definitionen
if
(
$col
[
"option"
]
==
"primary"
)
$index
.
=
"PRIMARY KEY ("
.
$col
[
"name"
]
.
"),"
;
if
(
$col
[
"option"
]
==
"index"
)
$index
.
=
"INDEX ("
.
$col
[
"name"
]
.
"),"
;
if
(
$col
[
"option"
]
==
"unique"
)
$index
.
=
"UNIQUE ("
.
$col
[
"name"
]
.
"),"
;
}
}
$sql
.
=
$index
;
$sql
=
substr
(
$sql
,
0
,
-
1
);
//die($sql);
$this
->
query
(
$sql
);
return
true
;
}
function
dropTable
(
$table_name
)
{
$this
->
check
(
$table_name
);
$sql
=
"DROP TABLE '"
.
$table_name
.
"'"
;
return
$this
->
query
(
$sql
);
}
// gibt Array mit Tabellennamen zurück
function
getTables
(
$database_name
=
''
)
{
if
(
$database_name
==
''
)
$database_name
=
$this
->
dbName
;
$result
=
mysql_list_tables
(
$database_name
);
for
(
$i
=
0
;
$i
<
mysql_num_rows
(
$result
);
$i
++
)
{
$tb_names
[
$i
]
=
mysql_tablename
(
$result
,
$i
);
}
return
$tb_names
;
}
// gibt Feldinformationen zur Tabelle zurück
/*
$columns = array(action => add | alter | drop
name => Spaltenname
name_new => neuer Spaltenname, nur bei 'alter' belegt
type => 42go-Meta-Type: int16, int32, int64, double, char, varchar, text, blob
typeValue => Wert z.B. bei Varchar
defaultValue => Default Wert
notNull => true | false
autoInc => true | false
option => unique | primary | index)
*/
function
tableInfo
(
$table_name
)
{
global
$go_api
,
$go_info
;
// Tabellenfelder einlesen
if
(
$rows
=
$go_api
->
db
->
queryAllRecords
(
"SHOW FIELDS FROM "
.
$table_name
)){
foreach
(
$rows
as
$row
)
{
$name
=
$row
[
0
];
$default
=
$row
[
4
];
$key
=
$row
[
3
];
$extra
=
$row
[
5
];
$isnull
=
$row
[
2
];
$type
=
$row
[
1
];
// Type in Metatype umsetzen
$column
=
array
();
if
(
stristr
(
$type
,
"int("
))
$metaType
=
'int32'
;
$column
[
"name"
]
=
$name
;
if
(
stristr
(
$type
,
"bigint"
))
$metaType
=
'int64'
;
//$column["type"] = $type;
if
(
stristr
(
$type
,
"char"
))
{
$column
[
"defaultValue"
]
=
$default
;
$metaType
=
'char'
;
if
(
stristr
(
$key
,
"PRI"
))
$column
[
"option"
]
=
"primary"
;
$tmp_typeValue
=
explode
(
'('
,
$type
);
if
(
stristr
(
$isnull
,
"YES"
))
{
$column
[
"typeValue"
]
=
substr
(
$tmp_typeValue
[
1
],
0
,
-
1
);
$column
[
"notNull"
]
=
false
;
}
else
{
$column
[
"notNull"
]
=
true
;
}
if
(
$extra
==
'auto_increment'
)
$column
[
"autoInc"
]
=
true
;
// Type in Metatype umsetzen
if
(
stristr
(
$type
,
"int("
))
$metaType
=
'int32'
;
if
(
stristr
(
$type
,
"bigint"
))
$metaType
=
'int64'
;
if
(
stristr
(
$type
,
"char"
))
{
$metaType
=
'char'
;
$tmp_typeValue
=
explode
(
'('
,
$type
);
$column
[
"typeValue"
]
=
substr
(
$tmp_typeValue
[
1
],
0
,
-
1
);
}
if
(
stristr
(
$type
,
"varchar"
))
{
$metaType
=
'varchar'
;
$tmp_typeValue
=
explode
(
'('
,
$type
);
$column
[
"typeValue"
]
=
substr
(
$tmp_typeValue
[
1
],
0
,
-
1
);
}
if
(
stristr
(
$type
,
"text"
))
$metaType
=
'text'
;
if
(
stristr
(
$type
,
"double"
))
$metaType
=
'double'
;
if
(
stristr
(
$type
,
"blob"
))
$metaType
=
'blob'
;
$column
[
"type"
]
=
$metaType
;
$columns
[]
=
$column
;
}
}
if
(
stristr
(
$type
,
"varchar"
))
{
return
$columns
;
$metaType
=
'varchar'
;
}
else
{
$tmp_typeValue
=
explode
(
'('
,
$type
);
return
false
;
$column
[
"typeValue"
]
=
substr
(
$tmp_typeValue
[
1
],
0
,
-
1
);
}
}
if
(
stristr
(
$type
,
"text"
))
$metaType
=
'text'
;
if
(
stristr
(
$type
,
"double"
))
$metaType
=
'double'
;
if
(
stristr
(
$type
,
"blob"
))
$metaType
=
'blob'
;
$column
[
"type"
]
=
$metaType
;
//$this->createTable('tester',$columns)
;
$columns
[]
=
$column
;
/*
}
$result = mysql_list_fields($go_info["server"]["db_name"],$table_name);
return
$columns
;
$fields = mysql_num_fields ($result);
}
else
{
$i = 0;
return
false
;
$table = mysql_field_table ($result, $i);
}
while ($i < $fields) {
$name = mysql_field_name ($result, $i);
$type = mysql_field_type ($result, $i);
//$this->createTable('tester',$columns);
$len = mysql_field_len ($result, $i);
$flags = mysql_field_flags ($result, $i);
/*
print_r($flags);
$result = mysql_list_fields($go_info["server"]["db_name"],$table_name);
$fields = mysql_num_fields ($result);
$columns = array(name => $name,
$i = 0;
type => "",
$table = mysql_field_table ($result, $i);
defaultValue => "",
while ($i < $fields) {
isnull => 1,
$name = mysql_field_name ($result, $i);
option => "");
$type = mysql_field_type ($result, $i);
$returnvar[] = $columns;
$len = mysql_field_len ($result, $i);
$flags = mysql_field_flags ($result, $i);
$i++;
print_r($flags);
}
*/
$columns = array(name => $name,
type => "",
defaultValue => "",
isnull => 1,
option => "");
$returnvar[] = $columns;
$i++;
}
}
*/
function
mapType
(
$metaType
,
$typeValue
)
{
global
$go_api
;
$metaType
=
strtolower
(
$metaType
);
}
switch
(
$metaType
)
{
case
'int16'
:
function
mapType
(
$metaType
,
$typeValue
)
{
return
'smallint'
;
global
$go_api
;
break
;
$metaType
=
strtolower
(
$metaType
);
case
'int32'
:
switch
(
$metaType
)
{
return
'int'
;
case
'int16'
:
break
;
return
'smallint'
;
case
'int64'
:
break
;
return
'bigint'
;
case
'int32'
:
break
;
return
'int'
;
case
'double'
:
break
;
return
'double'
;
case
'int64'
:
break
;
return
'bigint'
;
case
'char'
:
break
;
return
'char'
;
case
'double'
:
break
;
return
'double'
;
case
'varchar'
:
break
;
if
(
$typeValue
<
1
)
die
(
"Datenbank Fehler: Für diesen Datentyp ist eine Längenangabe notwendig."
);
case
'char'
:
return
'varchar('
.
$typeValue
.
')'
;
return
'char'
;
break
;
break
;
case
'text'
:
case
'varchar'
:
return
'text'
;
if
(
$typeValue
<
1
)
die
(
"Datenbank Fehler: Für diesen Datentyp ist eine Längenangabe notwendig."
);
break
;
return
'varchar('
.
$typeValue
.
')'
;
case
'blob'
:
break
;
return
'blob'
;
case
'text'
:
break
;
return
'text'
;
}
break
;
}
case
'blob'
:
return
'blob'
;
}
break
;
}
}
}
?>
?>
\ No newline at end of file
This diff is collapsed.
Click to expand it.
Preview
0%
Loading
Try again
or
attach a new file
.
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Save comment
Cancel
Please
register
or
sign in
to comment