zerig / sql-manager
此类连接到数据库并与之交互。
v1.1.1
2020-05-05 14:46 UTC
Requires
- php: >=5.6.0
- zerig/console: @dev
- zerig/date: @dev
- zerig/report: @dev
README
- 需要 \FCE\Str 类
此类连接到数据库并与之交互。
第一个数组用于在 SERVER 上连接。第二个数组用于 LOCALHOST。
$GLOBALS["mysql"] = new \SqlManager\Mysql([ "server_name" => "sql.server.cz", "db_user" => "server_user", "db_pass" => "123456", "db_name" => "my_server_db" ],[ "server_name" => "localhost", "db_user" => "root", "db_pass" => "123456", "db_name" => "my_local_db" ]);
当您只使用一个数组时,它将为 SERVER 和 LOCAL 使用相同的数据。
$GLOBALS["mysql"] = new \SqlManager\Mysql([ "server_name" => "localhost", "db_user" => "root", "db_pass" => "123456", "db_name" => "test" ]);
query($sql)
- $sql [字符串]
- @return [布尔值 / \SqlManager\MR 数组]
此方法接收 SQL 命令并将其发送到数据库。它可以用于任何 SQL 命令,例如
SELECT / INSERT / UPDATE / DELETE / CREATE
$success = $GLOBALS["mysql"]->query(" INSERT INTO man (name, age) VALUES ('John', '28'); "); $success => true // when everything is OK
SELECT
但是 SELECT 是特殊的!因为这个方法可以与数据库中的数据一起工作。像 MR 对象数组一样加载数据。
$array_man = $GLOBALS["mysql"]->query(" SELECT * FROM man "); $array_man->get_objects() => [ [0] => stdClass [ [id] => 1, [name] => "Jeroným", [age] => 28 ], [1] => stdClass [ [id] => 2, [name] => "Ráchel", [age] => 17 ], [2] => stdClass [ [id] => 3, [name] => "Benjamin", [age] => 13 ] ] foreach($array_man->get_objects() as $man){ echo $man->name."\n"; }
query_($sql)
- $sql [字符串] SQL 命令
- @return [\SqlManager\MR] 仅一个对象
无论什么,您都只得到 第一行 或 NULL。这一行不在数组中,它只是一个 \SqlManager\MR 对象。
$_man = $GLOBALS["mysql"]->query_(" SELECT * FROM man "); $_man->name => "John"
multi_query($sql)
- $sql [字符串]
- @return [布尔值]
此方法可以在一个中创建多个 SQL 命令。它们必须由分号分隔。所以它对于加载数据库很有用。
$success = $GLOBALS["mysql"]->multi_query(" -- Adminer 4.6.2 MySQL dump SET NAMES utf8; SET time_zone = '+00:00'; SET foreign_key_checks = 0; SET sql_mode = 'NO_AUTO_VALUE_ON_ZERO'; DROP TABLE IF EXISTS `man`; CREATE TABLE `man` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(150) NOT NULL, `age` int(11) NOT NULL, PRIMARY KEY (`id`) ) ENGINE=InnoDB DEFAULT CHARSET=latin1; INSERT INTO `man` (`id`, `name`, `age`) VALUES (1, 'Jeroným', 28), (2, 'Ráchel', 17), (3, 'Benjamin', 13), (4, 'Ludmila', 48), (5, 'Josef', 52), (6, 'Karel', 54), (11, 'Nym', 28); -- 2020-04-16 07:06:49 "); $success => true // when everything is OK
IDEAL HTML 表单
如果您使用此类 表单元素 名称,则可以通过更简单的方式通过 INSERT / UPDATE / UPSERT 发送数据。
<form method="POST" name="man"> <label>Name: </label> <input type="text" name="man['name']" value="<?= $_POST['man']['name'] ?>"> <label>Age: </label> <input type="text" name="man['age']" value="<?= $_POST['man']['age'] ?>"> <input type="submit" name="submit['man']" value="SUBMIT"> </form>
if(isset($_POST["submit"]["man"])){ $success = $GLOBALS["mysql"]->insert("man", $_POST["man"]); echo ($success)? "DATA WERE SUCCESSFULY SEND" : "SENDING DATA FAILS"; }
insert($table, $array_items)
- $table [字符串] 数据库表名称 "man"
- $array_items [键数组] 更新值 "array( 'age'=>'10', 'name'=>'Karel' )"
- @return [布尔值]
将 $array_item 中的数据插入到 $table 中创建的新行。
// Both variant are possible $GLOBALS["mysql"]->insert("man", $_POST["man"]); $GLOBALS["mysql"]->insert("man", [ "name" => "Karel", "age" => "54" ]);
update($table, $array_items, $where)
- $db [字符串] 数据库表名称 "man"
- $array_items [键数组] 更新值 "array( 'age'=>'10', 'name'=>'Karel' )"
- $where [字符串] "age=28 AND name='Carl'"
- @return [布尔值]
更新 $table 中的特定列的行/行,并通过 $where 参数选择它们
// Both variant are possible $GLOBALS["mysql"]->update("man", $_POST["man"], "name = 'Karel'"); $GLOBALS["mysql"]->update("man", [ "name" => "Karel", "age" => "54" ], "name = 'Karel'");
upsert($table, $array_items, $where)
- $db [字符串] 数据库表名称 "man"
- $array_items [键数组] 更新值 "array( 'age'=>'10', 'name'=>'Karel' )"
- $where [字符串] "age=28 AND name='Carl'"
- @return [布尔值]
UPDATE:当 $where 中的行存在时
INSERT:当 $where 中的行不存在时
在任何情况下,您都不关心行是否存在,但您最终都会得到您想要的结果。
// Both variant are possible $GLOBALS["mysql"]->upsert("man", $_POST["man"], "name = 'Karel'"); $GLOBALS["mysql"]->upsert("man", [ "name" => "Karel", "age" => "54" ], "name = 'Karel'");
delete($table, $where)
- $table [字符串] 数据库表名称 "man"
- $where [字符串] "age=28 AND name='Carl'"
- @return [布尔值]
通过 $where 参数删除 $table 中的特定行/行
$GLOBALS["mysql"]->delete("man", "name = 'Karel'"); $GLOBALS["mysql"]->delete("man", "name = 'Karel' AND age = 28");
deleteLast($table)
- $table [字符串] 数据库表名称 "man"
- @return [布尔值]
删除 $table 中的 最后一行
$GLOBALS["mysql"]->deleteLast("man");
exist($sql)
- $sql [字符串]
- @return [布尔值]
检查 SQL 命令是否返回数据。如果是,返回 1。如果不是,返回 0
$GLOBALS["mysql"]->exist("SELECT * FROM man WHERE name = 'Karel'") => 0 $GLOBALS["mysql"]->insert("man", ["name" => "Karel", "age" => "54" ]); $GLOBALS["mysql"]->exist("SELECT * FROM man WHERE name = 'Karel'") => 1
nextID($table)
- $table [string] 表名
- @return [void]
返回特定 $table 的下一个自动递增值
$GLOBALS["mysql"]->increment("man") => 126
lastID($table)
- $table [string] 表名
- @return [void]
返回特定 $table 的最后给定递增值
$GLOBALS["mysql"]->increment("man") => 125