我正在使用Codeigniter交易
$this->db->trans_start();
$this->db->query('AN SQL QUERY...');
$this->db->trans_complete();
Run Code Online (Sandbox Code Playgroud)
这工作得很好,我有问题是内部的trans_start和trans_complete我打电话等功能,这些功能与数据库交易,使他们包含插入和更新以及一些删除...例如:
$this->db->trans_start();
$this->utils->insert_function($data);
$this->utils->update_function2($test);
$this->db->trans_complete();
Run Code Online (Sandbox Code Playgroud)
现在,如果执行这些函数并且发生一些错误,CodeIgniter将不会执行回滚.
处理此类问题的最佳方法是什么?
我想到的唯一解决方案是从这些函数返回错误并在那些函数内添加(trans_stat和trans_complete)如果它返回错误测试则执行$this->db->trans_rollback
例如:
$this->db->trans_start();
$result = $this->utils->insert_function($data);
if($result === false){
$this->db->trans_rollback();
}
$this->db->trans_complete();
Run Code Online (Sandbox Code Playgroud)
有没有更好的方法呢?
更新1:
根据要求我正在调用的外部函数示例:
// insert_function contains
$rec = array(
'numero' => $numero,
'transaction_id' => $id,
'debit' => $product_taxes['amount_without_taxes'],
'date' => $data['date_transaction'],
);
$this->addExerciceAccountingRecords($rec);
and addExerciceAccountingRecords contains
function addExerciceAccountingRecords($records) {
$this->db->insert('transactions_exercices', $records);
}
Run Code Online (Sandbox Code Playgroud) 我正在尝试使用ssh从不同的服务器执行脚本
这是我从服务器1用来在服务器2上启动查询的命令:
ssh -t user@xxx.xxx.xxx.xx "cd /var/www/vhosts/xxxxx/subdomains/preprod/; sudo ./replace.sh";
Run Code Online (Sandbox Code Playgroud)
但问题是,当我做sudo了$home= /root在脚本下:/var/www/vhosts/xxxxx/subdomains/preprod/
我怎么能告诉sudo保护环境?
我试过了sudo -P -,sudo -H没有任何运气.
我有一个带2个数组($ schedule,$ remove)的函数,两个都是里面有时间的天数,它会从时间表中删除时间.
现在这个功能工作正常,如果我有1到20个用户之间需要2-4秒来生成日历,这很好但是当有20多个用户有很多时间表条目时它会超过15秒.
我正在使用CodeIgniter,我在一个帮助器中有这个功能,它被称为很多.
所以我想知道你们是否可以看到更好的方法来处理我的问题或我对算法进行的调整以使其更快.
注意: 在下面的代码中,我看到的一个大问题是每次修改结构时的递归调用和循环中断.
我在两个数组上循环并进行测试以查看缺少是否在可用性内/重叠/等于/外,然后如果结构被修改则调用函数,如果不返回最终结构.
笔记2 :
在本地Apache崩溃,因为有时递归函数被调用超过100次.
这是我的代码:
function removeSessionsFromSchedule($schedule, $remove) {
$modified = false;
if (is_array($schedule) && count($schedule) > 0 && is_array($remove) && count($remove) > 0 && checkArrayEmpty($remove)) {
// Minimise the iterations
$remove = minimiseRemoveSchedule($remove);
foreach ($schedule as $s => $dispo) {
if ($modified) {
break;
}
$pos = 0;
$countdispo = count($dispo);
foreach ($dispo as $d) {
$abs = isset($remove[$s]) ? $remove[$s] :null;
$counter = 0;
// availability start/end
$dis_s = strtotime($d['heure_debut']); …Run Code Online (Sandbox Code Playgroud) 我正在阅读一些PHP代码源,发现以下内容:
$failed |= is_numeric( $key );
Run Code Online (Sandbox Code Playgroud)
除了$key是数字之外,什么|=意思?
我们在CAPS中有一个加拿大地址数据库,客户要求我们转换为小写字母,期望第一个字母和' - '后的字母
所以我做了这个功能,但是我遇到了法语重音字母的问题.
当文件和字符集为ISO-88591它工作正常,但当我尝试使它UTF-8它不再工作.
输入示例:'damien-claudeélanger'输出:Damien-Claudeélanger
utf-8中的é将成为
function cap_letter($string) {
$lower = str_split("àáâçèéêë");
$caps = str_split("ÀÁÂÇÈÉÊË");
$letters = str_split(strtolower($string));
foreach($letters as $code => $letter) {
if($letter === '-' || $letter === ' ') {
$position = array_search($letters[$code+1],$lower);
if($position !== false) {
// test
echo $letters[$code+1] . ' == ' . $caps[$position] ;
$letters[$code+1] = $caps[$position];
}
else {
$letters[$code+1] = mb_strtoupper($letters[$code+1]);
}
}
}
//return ucwords(implode($letters)) ;
return implode($letters) ;
}
Run Code Online (Sandbox Code Playgroud)
我想到的其他解决方案是:ucwords(strtolower($ str))因为所有的地址都已经上限所以即使在应用了strtolower之后É也将保持É.
但是我会在ex:XXXÉXXÉ里面有É的问题
前段时间我在某处看到了Array.slice(0)比Array.slice()更快的事情.不幸的是现在我找不到那个来源.那可能吗?Array.slice(0)和Array.slice()有什么区别?
我正在使用jasperreport 4.7.0
我有一个查询,我按名称和日期订购.
现在客户希望当名称改变时我们添加一条水平线(参见附件img - red line)
有没有办法在不重复查询和字段的情况下完成此操作?

结果:

我有以下查询:
SELECT
x.id,x.title
FROM `x`
WHERE `x`.status = 'validated'
ORDER BY `x`.title ASC
Run Code Online (Sandbox Code Playgroud)
结果:
3042 Cinéastes en herbe Télé-Québec
1681 Danse contemporaine
2725 Dessins, peinture et illustrations.
2448 Les petits mots de Paolo
641 Ma tente à lire et les Mosaïques dans la rue
3215 Performance & Visites commentées
2186 Se partager l’espace : Yann Pocreau
2364 Souper communautaire
1223 100 ans
199 100% couleurs
2794 125 ans de tourisme à Laval
2306 À court de souffle!
1517 Abracadabra Sonia …Run Code Online (Sandbox Code Playgroud) 我无法将一个简单的变量传递给视图,有人能告诉我我做错了什么吗?
我有一个控制器用户:
class Controller_User extends Controller_Template_Login {
public function action_index()
{
$this->template = 'user/info';
parent::before();
$user = Auth::instance()->get_user();
$this->template->content = View::factory('user/info')
->bind('user', $user)
->bind('message', $message)
->bind('errors', $errors);
// if a user is not logged in, redirect to login page
if (!$user)
{
Request::current()->redirect('user/login');
}
}
}
Run Code Online (Sandbox Code Playgroud)
在我的视图(用户/信息)中,我得到的用户未定义.
我错过了什么?
编辑:请注意,这可以通过添加:
$user = Auth::instance()->get_user();
Run Code Online (Sandbox Code Playgroud)
到Controller_Template_Login
$user = Auth::instance()->get_user();
$this->template->user = $user;
Run Code Online (Sandbox Code Playgroud)
我想知道的是为什么这不起作用:
$user = Auth::instance()->get_user();
$this->template->content = View::factory('user/info')
->bind('user', $user)
->bind('message', $message)
->bind('errors', $errors);
Run Code Online (Sandbox Code Playgroud) 我有PHP和JavaScript/CSS的问题.
我有数据库与表.该表有文章的描述.我想回应数据库中文章的描述.不幸的是,其中许多都包含JavaScript或CSS(然后是一些文章文本),所以当我使用echo时,它会显示所有代码(以及之后的文本).有没有办法不显示JavaScript/CSS部分并只显示文本?例如使用str_replace和正则表达式?如果是,有人可以写我应该怎么样?
感谢您的帮助,如果您需要更多信息(代码等),请告诉我
我们有一个系统,我们有一个主/多个从。
目前一切都发生在 Master 上,而 Slave 只是在这里做备份。
我们使用 Codeigniter 作为开发平台。
现在我们决定使用从属设备进行读取,使用主设备进行写入查询。
有人告诉我,如果不修改源代码,这是不可行的,因为代理无法知道查询的类型。
任何想法如何在不给完美工作的系统造成太大损害的情况下继续进行...
我想知道是否可以在包含多个字段的表上进行选择并将它们连接到1个结果中:
示例:
表:
id
dayOne_City
dayTwo_City
dayThree_City
Run Code Online (Sandbox Code Playgroud)
结果:一列包含所有城市的行(Distinct).
2)如果我对该特定列表有很多查询,我最好做一个视图吗?
3)我应该选择3联盟吗?
谢谢
php ×5
mysql ×4
codeigniter ×2
javascript ×2
sql ×2
algorithm ×1
css ×1
database ×1
diacritics ×1
encoding ×1
equality ×1
ireport ×1
kohana ×1
kohana-3.2 ×1
merging-data ×1
mysql-proxy ×1
performance ×1
select ×1
slice ×1
sql-order-by ×1
ssh ×1
sudo ×1
transactions ×1
utf-8 ×1