($width) AND $width .= 'px';
$style = " style=\"width: $width\"";
}
$value = $value ? $value : date('H:i');
$s = "";
return $s;
}
// form_date('start', '2018-07-05') 为空则当前日期
function form_date($name, $value = 0, $width = FALSE)
{
$style = '';
if (FALSE !== $width) {
is_numeric($width) AND $width .= 'px';
$style = " style=\"width: $width\"";
}
$value = $value ? $value : date('Y-m-d');
$s = "";
return $s;
}
/**用法
*
* echo form_radio_yes_no('radio1', 0);
* echo form_checkbox('aaa', array('无', '有'), 0);
*
* echo form_radio_yes_no('aaa', 0);
* echo form_radio('aaa', array('无', '有'), 0);
* echo form_radio('aaa', array('a'=>'aaa', 'b'=>'bbb', 'c'=>'ccc', ), 'b');
*
* echo form_select('aaa', array('a'=>'aaa', 'b'=>'bbb', 'c'=>'ccc', ), 'a');
*/
?>组保留的标签 余下为需要删除的标签
unset($oldtag[$key]);
}
}
}
if (!empty($oldtag)) {
$tagids = array();
foreach ($oldtag as $tagid => $tagname) {
$tagids[] = $tagid;
}
well_oldtag_delete($tagids, $tid);
}
$r = well_tag_process($tid, $fid, $create_tag, $tagarr);
return $r;
}
// 删除标签和绑定的主题
function well_oldtag_delete($tagids, $tid)
{
$pagesize = count($tagids);
$arrlist = well_tag_find_by_tagids($tagids, 1, $pagesize);
$delete_tagids = array(); // 删除
$tagids = array();
$n = 0;
foreach ($arrlist as $val) {
++$n;
if (1 == $val['count']) {
// 只有一个主题
$delete_tagids[] = $val['tagid'];
} else {
$tagids[] = $val['tagid'];
}
}
!empty($delete_tagids) and well_tag_delete($delete_tagids);
$arlist = well_tag_thread_find_by_tid($tid, 1, $n);
if ($arlist) {
$ids = array();
foreach ($arlist as $val) $ids[] = $val['id'];
well_tag_thread_delete($ids);
}
!empty($tagids) and well_tag_update($tagids, array('count-' => 1));
}
// 标签数据处理 $arr=新提交的数组 $tagarr=保留的旧标签
function well_tag_process($tid, $fid, $new_tags = array(), $tagarr = array())
{
if (empty($tid)) return '';
// 新标签处理入库
if ($new_tags) {
$threadarr = array();
$tagids = array();
$i = 0;
$size = 5;
$n = count($tagarr);
$n = $n > $size ? $size : $size - $n;
foreach ($new_tags as $name) {
++$i;
$name = trim($name);
$name = stripslashes($name);
$name = strip_tags($name);
$name = str_replace(array(' ', '#', "@", "$", "%", "^", '&', '·', '<', '>', ';', '`', '~', '!', '¥', '……', ';', '?', '?', '-', '—', '_', '=', '+', '.', '{', '}', '|', ':', ':', '、', '/', '。', '[', ']', '【', '】', '‘', ' ', ' ', ' ', ' ', ' '), '', $name);
$name = htmlspecialchars($name, ENT_QUOTES);
if ($name && $i <= $n) {
// 查询标签
$read = well_tag_read_name($name);
if ($read) {
// 存在 count+1
$tagids[] = $read['tagid'];
} else {
// 入库
$arr = array('name' => $name, 'count' => 1);
$tagid = well_tag_create($arr);
FALSE === $tagid and message(-1, lang('create_failed'));
$read = array('tagid' => $tagid, 'name' => $name);
}
$tag_thread = array('tagid' => $read['tagid'], 'tid' => $tid);
$threadarr[] = $tag_thread;
$tagarr[$read['tagid']] = $read['name'];
}
}
!empty($threadarr) and tag_thread_big_insert($threadarr);
!empty($tagids) and well_tag_update($tagids, array('count+' => 1));
}
$json = empty($tagarr) ? '' : xn_json_encode($tagarr);
return $json;
}
?>return $r;
}
/**
* @param int $page 页数
* @param int $pagesize 每页显示数量
* @return mixed
*/
function link_find($page = 1, $pagesize = 100)
{
$arr = link__find($cond = array(), array('rank' => -1), $page, $pagesize);
return $arr;
}
/**
* @param $id
* @return bool 返回FALSE失败 TRUE成功
*/
function link_delete($id)
{
if (empty($id)) return FALSE;
$r = link__delete(array('id' => $id));
link_delete_cache();
return $r;
}
//--------------------------kv + cache--------------------------
/**
* @return mixed 返回全部友情链接
*/
function link_get($page = 1, $pagesize = 100)
{
$g_link = website_get('friends_link');
if (empty($g_link)) {
$g_link = link_find($page, $pagesize);
$g_link AND website_set('friends_link', $g_link);
}
return $g_link;
}
// delete kv and cache
function link_delete_cache()
{
website_set('friends_link', '');
return TRUE;
}
?> $v = implode(",", $v);
$temp[] = $v;
}
// 去掉重复的字符串,也就是重复的一维数组
$temp = array_unique($temp);
// 再将拆开的数组重新组装
$output = array();
foreach ($temp as $k => $v) {
if ($stkeep) $k = $starr[$k];
if ($ndformat) {
$temparr = explode(",", $v);
foreach ($temparr as $ndkey => $ndval) $output[$k][$ndarr[$ndkey]] = $ndval;
} else $output[$k] = explode(",", $v);
}
return $output;
}
// 合并二维数组 如重复 值以第一个数组值为准
function array2_merge($array1, $array2, $key = '')
{
if (empty($array1) || empty($array2)) return NULL;
$arr = array();
foreach ($array1 as $k => $v) {
isset($v[$key]) ? $arr[$v[$key]] = array_merge($v, $array2[$k]) : $arr[] = array_merge($v, $array2[$k]);
}
return $arr;
}
/*
* 对二维数组排序 两个数组必须有一个相同的键值
* $array1 需要排序数组
* $array2 按照该数组key排序
* */
function array2_sort_key($array1, $array2, $key = '')
{
if (empty($array1) || empty($array2)) return NULL;
$arr = array();
foreach ($array2 as $k => $v) {
if (isset($v[$key]) && $v[$key] == $array1[$v[$key]][$key]) {
$arr[$v[$key]] = $array1[$v[$key]];
} else {
$arr[] = $v;
}
}
return $arr;
}
?>
Navicat17.0.7免费使用和安装教程 - Windows-软件玩家 - 软件改变生活!
目录
- 1. 介绍
- 2. 下载
- 3. 使用说明
- 4. 安装Navicat
- 5. Navicat 17 新亮点(下面都是凑字数的,可以不用看)
- 5.1 崭新设计
- 5.2 可靠的数据生成
- 5.3 促进团队合作
- 5.3.1 支持更多对象
- 5.3.2 公共云或内部部署
- 5.4 更有效地展示你的数据
- 5.5 其他改进
- 5.5.1 连接配置文件
- 5.5.2 值选取器
- 5.5.3 查询摘要
- 5.5.4 字段信息
1. 介绍
Navicat Premium 是一套可创建多个连接的数据库开发工具,让你从单一应用程序中同时连接 MySQL、Redis、MariaDB、MongoDB、SQL Server、Oracle、PostgreSQL 和 SQLite 。它与 GaussDB 、OceanBase 数据库及 Amazon RDS、Amazon Aurora、Amazon Redshift、Amazon ElastiCache、Microsoft Azure、Oracle Cloud、MongoDB Atlas、Redis Enterprise Cloud、阿里云、腾讯云和华为云等云数据库兼容。你可以快速轻松地创建、管理和维护数据库。
2. 下载
下载地址:https://pan.quark/s/588ddf7df828
手机夸克打开此链接保存:
3. 使用说明
安装完 Navicat 后(不会安装看步骤4),在 Navicat 是关闭的情况下,把 winmm.dll 放到 Navicat 的安装目录下。如果不知道 winmm.dll 在哪,注意看下面的图:
4. 安装Navicat
这里先勾选 我同意(a) ,然后点击 下一步:
这里先 浏览 选择一个安装位置,不要无脑装在C盘,选择完安装位置以后,点击 下一步:
这里是问要不要创建桌面图标,默认勾选就行,然后点击 下一步:
最后点击 安装:
然后看 第三步 即可。
5. Navicat 17 新亮点(下面都是凑字数的,可以不用看)
提升你的工作表现。
Navicat 17 具备多项改进和新功能,能满足你对数据库开发的需求。
Navicat 拥有过百种增强功能和耳目一新的界面,为你提供构建、管理和维护数据库的新方法。
5.1 崭新设计
相比上一个版本,Navicat 17 带来了许多 UI/UX 改进。我们致力于提供专业的 UX 设计,以提高可用性和可访问性。因此,你能够以前所未有的速度完成复杂的工作。
5.2 可靠的数据生成
全新的数据生成工具提供了全面的功能,可生成大量高质的测试数据。你可以根据业务规则和约束快速创建具有参照完整性的真实数据集。
5.3 促进团队合作
云解决方案增加了解决冲突文件的新方法。你现在可以选择放弃服务器中的文件并保留你的文件,或放弃你的副本而不保存任何更改,或重命名你的副本以保留两个版本的文件。
5.3.1 支持更多对象
代码段和图表工作区已添加到我们的云解决方案中。将你的文件保存到云并在你的 Navicat 产品之间共享。
5.3.2 公共云或内部部署
使用 Navicat Cloud 既简单又低成本,但 Navicat On-Prem Server是企业处理敏感数据的理想选择。你可以选择最能满足你需求合适的云解决方案。
5.4 更有效地展示你的数据
智能图表工具中包含更多图表类型和新功能。连接到你选择的任何数据源,例如 Excel、Access 或 ODBC。你还可以使用自定义字段扩展数据:更改字段类型、串联字段、映射值或基于其他字段顺序排序。探索我们的另一个产品 Navicat Charts Creator。
5.5 其他改进
5.5.1 连接配置文件
为外出用户配置多个连接配置文件,可根据使用的设备的当前位置切换连接设置。
5.5.2 值选取器
重新编写了筛选功能,嵌入了一个直观的面板,让你从一个列表中选择值,或输入可能值以按照你要的方式进一步限制数据。
5.5.3 查询摘要
显示每个 SQL 语句的详细摘要。这是一个易于阅读的一页摘要,用于了解查询的运行状况和性能,并提供跳转到潜在错误的快捷方式。
5.5.4 字段信息
让你快速查看列属性。助你轻松地在表查看器中获取列之间的信息。
本文标签:
教程Windows
发表评论