我一直在我的PHP代码中使用try..catch块,但我不确定我是否一直在正确使用它们.
例如,我的一些代码如下所示:
try {
$tableAresults = $dbHandler->doSomethingWithTableA();
$tableBresults = $dbHandler->doSomethingElseWithTableB();
} catch (Exception $e) {
return $e;
}
Run Code Online (Sandbox Code Playgroud)
所以我在同一个try/catch块中对多个数据库操作进行分组,因为如果在任何事务中发生任何异常,我将能够处理它.
我这样做是因为我认为它比以下更具可读性和效率:
try {
$tableAresults = $dbHandler->doSomethingWithTableA();
} catch (Exception $e) {
return $e;
}
try {
$tableBresults = $dbHandler->doSomethingWithTableB();
} catch (Exception $e) {
return $e;
}
Run Code Online (Sandbox Code Playgroud)
虽然,我不确定我所做的是一种好的做法,还是一种懒惰的方法来捕捉异常.
我的假设是,只有异常需要特殊处理时,它才应该有自己的try/catch块,否则将它们分组到同一个try/catch中应该没问题.
所以我的问题是:
每个数据库事务使用try/catch块有什么好处吗?或者我仍然可以在同一个try/catch块中对多个数据库事务进行分组而没有任何问题?
嵌套try/catch块可以吗?谢谢!
编辑
return语句主要仅用于演示目的,但我也使用了返回,catch()因为我正在向该方法发出AJAX请求,而Javascript期待一个JSON对象,然后如果发生异常,我返回一个空的JSON编码数组.我只是认为在我的示例中放置特定代码不会增加任何值.
如果我需要创建几个嵌套的DOM元素,我知道一种方法,就是将它们写成长字符串,然后使用合适的jQuery函数将它们放在文档中.就像是:
elem.html(
'<div class="wrapper">
<div class="inner">
<span>Some text<span>
</div>
<div class="inner">
<span>Other text<span>
</div>
</div>');
Run Code Online (Sandbox Code Playgroud)
这种方式显然不是最干净的.刺痛并不需要太长时间来弄乱,编辑就成了问题.我更喜欢这种表示法:
$('<div></div>', {
class : 'inner'
})
.appendTo( elem );
Run Code Online (Sandbox Code Playgroud)
问题是我不知道如何在上面动态创建嵌套元素时有效地实现它.因此,如果有第二个符号的第一个例子,我会很高兴了解它.
基本上,问题是,什么是动态创建嵌套HTML元素的最佳方法,而不必处理凌乱的长字符串?
注意:我知道模板引擎.然而,这是一个关于动态创建几个HTML元素的问题.就像为插件或类似案例构建DOM依赖项时一样.
在命令提示符下执行任何查询时,我一直收到这个奇怪的消息MySQL.
ignoring query to other database
Run Code Online (Sandbox Code Playgroud)
我已经尝试通过发出"use database_name"命令来更改数据库.
请阅读更新,因为我的"实际混淆"在那里.
自从Joomla以来,它一直很安静!开始支持bcrypt哈希算法,以及md5 + salt自Joomla以来一直是事实!1.5.
现在我的问题是"作为最终用户,如果我立即开始使用Bcrypt,我会得到什么好处,与当前的算法相比,这MD5 + salt对于每天有几百个访问者的普通博客是否有任何影响?"
更新: -
此外,我在某处读到,由于md5哈希的速度,我的密码可以在几天内/几个月内轻松计算出来.
但这不需要我的哈希已经与攻击者进行比较吗?如果他/她首先没有哈希,那么我使用的哈希算法如何影响我的网站安全性呢?最终他最终还是不得不向我的登录页面发布Brute Force?
如果它是由Brute强制推进,那么它是否Bcrypt同样容易受到密码猜测的影响?
注意:为什么是downvotes,这是最终用户的逻辑关注点.:(
我想实现在阿拉伯字母的字符输入“阿尔法”的验证,使用JavaScript正则表达式/[\u0600-\u06FF]/的指示在这个职位。我只想接受阿拉伯字母字符和空格。
现在的问题是它给出了以下结果:
r = /[\u0600-\u06FF]/
r.test("abcd") // false - correct
r.test("@#$%^") // false - correct
r.test("?") // true - correct
r.test("abcd$$#5?") // true - should be false
r.test("abcd?") // true - should be false
Run Code Online (Sandbox Code Playgroud)
如果给出单个匹配字符,则它将整个输入归类为可接受的,即使输入的其余部分充满了不可接受的字符。我应该使用什么正则表达式?
我有一个问题,mysql 连接字符串中用户标志后面的空格有什么意义-u?
mysql -u myname -pmypass mydb
Run Code Online (Sandbox Code Playgroud)
我的意思是说,上面的命令工作得很好,如果我没有在后面传递一个空格-u并且只写上面的命令如下。
mysql -umyname -pmypass mydb
Run Code Online (Sandbox Code Playgroud)
我尝试使用以下搜索词来搜索解释。
mysql login whitespace after user flagmysql connection console whitespace after user flag我发现在密码标志后提到了空格-p,这里。但是页面没有讨论用户标志之后的空格-u。
.... -p 或 --password= 和后面的密码之间不能有空格。
如何将值传递给命令行 GUI 提示符?
就像我通常使用以下命令在新的 Ubuntu 上安装 LAMP 一样。
sudo apt-get install lamp-server^ phpmyadmin
Run Code Online (Sandbox Code Playgroud)
在安装过程中,我被要求提供一些输入,如下所示
那么如何从剧本中传递/输入值呢?
我正在使用 certbot 的 cloudflare 插件为我的域生成通配符证书。
现在我也想使用--apache插件来更新 apache 配置。
我尝试运行以下命令
certbot -d example.in -d *.example.in --dns-cloudflare --apache
Run Code Online (Sandbox Code Playgroud)
显然,该应用程序抛出以下错误。
Too many flags setting configurators/installers/authenticators 'apache' -> 'dns-cloudflare'
Run Code Online (Sandbox Code Playgroud)
我需要 cloudflare 插件来自动验证通配符 dns,但同时我还需要 apache 插件来自动设置配置。
这可以实现吗?如果可以,如何实现?
我需要在mysql表上删除指定移动号码的重复行.如何使用Laravel查询执行此操作?
php ×3
ansible ×2
javascript ×2
mysql ×2
arabic ×1
bcrypt ×1
certbot ×1
command-line ×1
console ×1
dom ×1
hash ×1
joomla ×1
jquery ×1
laravel ×1
laravel-5.2 ×1
lets-encrypt ×1
md5 ×1
nested ×1
regex ×1
try-catch ×1
validation ×1