zerig/sql-manager

此类连接到数据库并与之交互。

v1.1.1 2020-05-05 14:46 UTC

This package is auto-updated.

Last update: 2024-09-06 00:30:48 UTC


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