这里有一些有用的链接, 三星 J5 手机.
档案 : June2018
有时, life bring us some questions that make think “;怎么可能?”; and “;我们怎样才能解决这类问题呢??”;.
今天是其中的一天. 一个来自同事矿山的女儿重置您的三星 J5 总理解决崩溃问题. 当它最终启动, 的惊喜: 她忘记了您的 Google 帐户和您的密码.
幸运, 的互联网 is full of “;How To”; 这类麻烦. 其中一些不工作或是完全假的, 主要在 Youtube 视频. 这就是为什么我做这个视频教程.
手机最终在我的手, 我解开它后, 看到一些视频和阅读一些有用的网页.
信息:
远程 GsmEdge 是一个 Android 应用程序, 你主要用于帮助解锁谷歌帐户, 主要在三星手机.
奥丁允许您更新您的 Android 固件毫不大惊小怪.
Odin3 是一个免费的 PC (窗户) 可闪光的应用 (和根) 一些基于 Android 的手机.
与 Odin3, 你可以在你的三星手机中闪现 rom. 在您的手机制造商发布更新之前, 您可以在智能手机上安装任何支持的 Android 操作系统版本。, 把你放在软件的流血边缘. 一旦你的手机被扎根
信息:
也用于帮助解锁谷歌帐户过程, 主要在三星手机
jQuery 掩码插件 是一个伟大的 Javascript 库, 用于格式化字段以供演示和/或强制用户正确输入.
这里, 我演示如何处理输入或其他 HTML 元素, 以便在源日期与目标元素的格式不同时显示日期.
示例:
- 我们有一个日期时间与 年-月-日小时:分钟:秒 只需要显示 年/月/日 部分.
- 我们有一个日期在 年月日 并需要格式化为 日/月/年.
jQueryMask 是非常简单的使用. 它不需要太多, 以掩盖任何你需要的. 看看他的网站上的例子.
如果需要设置简单日期字段的格式 (即使在非输入元素中), 只需使用下面的代码.
jQuery('[数据角色 ="日期"]).面具("TC99/M9/D9", { 占 位 符: "____/__/__", 翻译: { "D": {模式: /[0-3]/, 选: 假, 递 归: 真正的}, "M": {模式: /[01]/, 选: 假, 递 归: 真正的}, "T": {模式: /[12]/, 选: 假, 递 归: 真正的}, "C": {模式: /[09]/, 选: 假, 递 归: 真正的} } });
上面的代码可以对日期进行掩码和预验证。 年/月/日 格式.
输入像
<输入类型 ="文本" 数据角色 ="日期" 值 ="2018-06-11 15:47" />
将改变他的价值 2018/06/11.
如果您尝试键入另一个日期 (清除后, 答案是肯定的) 您不能从不同的数字开始 1 或 2. 这是因为我们的面具有一个翻译要做时, 允许字符. 如果模式不匹配, 字符被擦除.
The meaning of “;TC99/M9/D9”; 掩码是:
- 必须从 1 或 2 (翻译 T: /[12]/ –; 自定义格式)
- 必须有数字 0 或 9 (翻译 C: /[09]/ –; 自定义格式)
- 必须有一个数字 (任何) (翻译 9 –; MaskPlugin 核心格式)
- 必须有一个数字 (任何) (翻译 9 –; MaskPlugin 核心格式)
- 斜线将自动添加 ( / )
- 必须有数字 0 或 1 (翻译 M: /[01]/ –; 自定义格式)
- 必须有一个数字 (任何) (翻译 9: MaskPlugin 核心格式)
- 斜线将自动添加 ( / )
- 必须有数字 0, 1, 2 或 3 (翻译 D: /[0-3]/ –; 自定义格式)
- 必须有一个数字 (任何) (翻译 9: MaskPlugin 核心格式)
答案是肯定的, 没有真正的验证. You can type “;2999/19/39”; 这不是一个有效的日期, 但几乎完成.
所以, 以另一种方式格式化, 只是更改掩码参数顺序.
但, 如果源日期的模式不同, 如月/日/年, 掩码不工作. The date output for “;06/11/2018 15:40”; will be weird “;1018/15/0“;.
要处理不同的日期格式, 需要的不仅仅是简单的掩码. 我们将需要一个函数.
查看下面的代码
var maskBehaviorDateTime = 函数 (瓦尔, 和, 领域) { // 这个函数必须返回一个掩码 "TC99/M9/D9"; // 我们所期望的格式 var v = 字段。(输入) ? 字段. val() : 字段. 文本(); // 是一个输入或另一个 html 元素?? v = v 替换(/\D/克, ''); // 条带非数字, 如果 (V != '') { // 具有价值? 如果 ((/^[01]\D[0-3]\d d{4}$/).测试(V)) { //测试模式匹配月份/日/年仅 v = v 替换(/^(\D{4})(\D{2})(\D{2})$/, ' $ 3/$ 2/$ 1 '); } 否则, 如果 ((/^[01]\D[0-3]\d d{4}[012]\D[0-5]\d $/).测试(V)) { //测试模式匹配月份/日/年小时:分钟 v = v 替换(/^(\D{2})(\D{2})(\D{4})(\D{2})(\D{2})$/, ' $ 3/$ 2/$ 1 '); // 如果我们需要显示小时和分钟, 返回的掩码也必须更改 // v = v 替换(/^(\D{2})(\D{2})(\D{4})(\D{2})(\D{2})$/, $ 3/2 元/1 元 $4:$5'); // msk = ' TC99/M9/D9 h9:m9 '; // 必须在翻译选项中存在 h 和 m } 字段。(输入) ? 字段. val(V) : 字段. 文本(V); } 返回 msk; }, optionsDateTime = { 占 位 符: "____/__/__", 翻译: { "D": {模式: /[0-3]/, 选: 假, 递 归: 真正的}, "M": {模式: /[01]/, 选: 假, 递 归: 真正的}, "T": {模式: /[12]/, 选: 假, 递 归: 真正的}, "C": {模式: /[09]/, 选: 假, 递 归: 真正的}, "H": {模式: /[0-2]/, 选: 真正的, 递 归: 真正的}, "m": {模式: /[0-5]/, 选: 真正的, 递 归: 真正的} } }; jQuery('[数据角色 ="日期"]').面具(maskBehaviorDateTime, optionsDateTime);
现在我们有两种翻译模式 (h 和 m). H 表示 n 索引位置必须有数字 0, 1 或 2 和 m 之间的数字 0 和 5. 请记住, 案件事项.
使用上面的代码, 我们可以通过多种方式格式化和显示日期. 只是改变 .测试() 和 .取代() 模式以填充所需的模式.
这是我使用的代码, 用于格式化数据库日期时间字段 (以年月份为日期)。:分钟:第二个 html 元素的日期/年/月小时:分钟
var maskBehaviorDateTime = 函数 (瓦尔, 和, 领域) { // 如果已经有一个值, 标准 dd/mm/日化的格式与可选的 hh:毫米:无功 msk = "TC99/M9/D9 h9:m9:s9"; 如果 (attr 领域。("原始日期-值") == 未定义) { var o = 字段。(输入) ? 字段. val() : 字段. 文本(); } 还 { var attr = 字段。("原始日期-值"); } v = 替换(/\D/克, ''); 如果 (V != '') { attr 领域。("原始日期-值") == undefined && attr 领域。("原始日期-值", 的); 如果 ((/^[12][09]\D{2}[01]\D[0123]\d $/).测试(V)) { // 年/月/日 v = v 替换(/^(\D{4})(\D{2})(\D{2})$/, ' $ 3/$ 2/$ 1 '); msk = "D9/M9/TC99"; } 否则, 如果 ((/^[12][09]\D{2}[01]\D[0123]\D[012]\D[0-5]\d $/).测试(V)) { // 年/月/日小时:分钟 v = v 替换(/^(\D{4})(\D{2})(\D{2})(\D{2})(\D{2})$/, $ 3/2 元/1 元 $4:$5'); msk = "D9/M9/TC99 h9:m9"; } 否则, 如果 ((/^[12][09]\D{2}[01]\D[0123]\D[012]\D[0-5]\D[0-5]\d $/).测试(V)) { // 年/月/日小时:分钟:第二 v = v 替换(/^(\D{4})(\D{2})(\D{2})(\D{2})(\D{2})(\D{2})$/, $ 3/2 元/1 元 $4:$5:$6'); msk = "D9/M9/TC99 h9:m9:s9"; } 字段。(输入) ? 字段. val(V) : 字段. 文本(V); } 返回 msk; }, optionsDateTime = { 占 位 符: "__/__/____", 翻译: { "D": {模式: /[0-3]/, 选: 假, 递 归: 真正的}, "M": {模式: /[01]/, 选: 假, 递 归: 真正的}, "T": {模式: /[12]/, 选: 假, 递 归: 真正的}, "C": {模式: /[09]/, 选: 假, 递 归: 真正的}, "H": {模式: /[0-2]/, 选: 真正的, 递 归: 真正的}, "m": {模式: /[0-5]/, 选: 真正的, 递 归: 真正的}, "s": {模式: /[0-5]/, 选: 真正的, 递 归: 真正的} }, }; jQuery('[数据角色 ="日期"]').面具(maskBehaviorDateTime, optionsDateTime);
输入像
<输入类型 ="文本" 数据角色 ="日期" 值 ="2018-06-11 15:40">
输出将
11/06/2018 15:40
希望这能帮到你!
有时, 我们需要在生成 SQL 指令时通过几个列搜索单个值.
假设下表
- [ENTITY_ONE]
- Id
- COLUMN_A
- COLUMN_B
- COLUMN_C
- COLUMN_D
- COLUMN_E
如果需要搜索列上的单个值 B,D 和 E 我们将需要使用以下指令
选择 ID, COLUMN_A,(...列。。), COLUMN_E 从 ENTITY_ONE 那里 COLUMN_B 喜欢 '%search_value% ' 或 COLUMN_D 象 '%search_value% ' 或 COLUMN_E 象 '%search_value% ';
在 PHP 代码中, 我们可以做
$q = '%search_value% ';
$sql = "选择 * 从 ENTITY_ONE 那里 COLUMN_B 喜欢 ' $q ' 或 COLUMN_D 喜欢 ' $q ' 或 COLUMN_E 喜欢 ' $q ';
$pdo = 新的 pdo($Dsn, $用户, $通过);
$stmt = $pdo->查询($Sql);
很好, this can work but we know that isn’;最好的方法. 我们需要使用绑定值来避免 SQL 注入和其他恶意处理.
所以, 代码可以修改为
$q = '%search_value% '; $sql = "选择 * 从COLUMN_B喜欢的地方ENTITY_ONE ? 或COLUMN_D喜欢 ? 或COLUMN_E喜欢 ?; $阿格斯= [$问, $问, $问]; // 我们每个条目需要一个条目 "?" on instruction $pdo = new PDO($Dsn, $用户, $通过); $stmt = $pdo->准备($Sql); $stmt->执行($阿格斯);
好多了, 但, 构建复杂的 SQL 指令时, things can be confusing with lots of arguments and don’;别忘了: 订单事项.
愉快的 PDO 可以在使用命名绑定时以不同的顺序绑定值.
$q = '%search_value% '; $sql = "选择 * 从COLUMN_B喜欢的地方ENTITY_ONE :first_arg或COLUMN_D喜欢 :second_arg或COLUMN_E喜欢 :third_arg; $pdo = 新的 pdo($Dsn, $用户, $通过); $stmt = $pdo->准备($Sql); // One way $args = [':first_arg' => $问, ':third_arg' =>$问, ':second_arg' => $问]; // 我们每个条目需要一个条目 ":名字" on instruction $stmt->执行($阿格斯); // Another way $stmt->bindValue(':third_arg '. $问); $stmt->bindValue(':first_arg ', $问); $stmt->bindValue(':second_arg ', $问); $stmt->执行();
嗯, seems that this isn’;不够好. 我们只改变使用 1-索引占位符 到一个 :命名占位符. There’;没有超出代码可读性的增益, 并且有可能以任何顺序绑定.
是的, 但现在我们可以做最好的方法时, 使用一个独特的搜索词在几列. 我们只能使用一个绑定到一个或多个 :named placeholders ’;因为 PDO 聪明聪明. 看我们的最终代码在这里.
$q = '%search_value% '; $sql = "选择 * 从COLUMN_B喜欢的地方ENTITY_ONE :unique_arg或COLUMN_D喜欢 :unique_arg或COLUMN_E喜欢 :unique_arg; $pdo = 新的 pdo($Dsn, $用户, $通过); $stmt = $pdo->准备($Sql); // One way $args = [':unique_arg' => $问]; // 我们可以绑定所有 :name with only one term $stmt->执行($阿格斯); // Another way $stmt->bindValue(':unique_arg', $问); $stmt->执行();
使用相同的参数编写许多 SQL 指令时可以节省大量的输入.