如何添加修复功能 - 在模型 php 文件中的特定 ID 中更新数据库 [=11g=] 中的单元格
How to add a fuction to Repair - update a cell in database table in specific id in model php file
我重制了一个扩展,所以我坚持了我必须做的最后一项工作。
我为管理员创建了一个树枝,它显示了一个列表,该列表从数据库中的 table 中获取数据。在列表的每一行中,我创建了一个按钮,用于修复 table 的特定单元格。所以每一行都有自己的id。
查看页面列表中的图像:
我制作了控制器文件,但我卡在必须完成其余工作的模型文件中。
在下面的代码中,我必须更改一些内容,以便通过按下修复按钮读取特定的 id。
public function repairSaveCarts($link_id=" ") {
$this->db->query("SELECT * FROM " . DB_PREFIX . "save_cart WHERE link_id = '" . (int)$link_id . "'");
$db_id = $this->db->getLastId();
$end_url = base64_encode(serialize($db_id));
$url = $this->config->get('config_url').$end_url;
$this->db->query("UPDATE " . DB_PREFIX . "save_cart SET shorturl = '" . $this->db->escape($url) . "' WHERE link_id = '" . (int)$db_id . "'");
}
我认为更改必须在 $db_id = $this->db->getLastId();
行中完成,但我不确定。
请有人帮忙。
我让它工作。我在控制器的 request->get | post
中有一个小语法错误,因此模型没有从按钮获得正确的 ID。
public function repairSaveCarts($link_id) {
$end_url = base64_encode(serialize((int)$link_id));
$url = $this->config->get('config_url').$end_url;
$this->db->query("UPDATE " . DB_PREFIX . "save_cart SET shorturl = '" . $this->db->escape($url) . "', date_added = NOW() WHERE link_id = '" . (int)$link_id . "'");
return $query->row;
}
我在 serialize
中注意到的一件事是,当模型从控制器获取 id 时,它收到的是 spring
值而不是 int
值。结果是给
举例
id 10 ---> serialize value= s:2:"10";
为了解决这个问题,我在模型中添加了 serialize
之后的 (int)
值,现在给我正确的结果
id 10 ---> serialize value= i:10;
.
现在唯一的问题是,当模块从前端页面保存到数据库时,给我完整的 URL 站点:
https://www.example.com/aToxMDs=
但是在管理员端,修复保存到数据库的功能只给我:
aToxMDs=
行
$url = $this->config->get('config_url').$end_url;
好像不行。
我必须编辑什么才能在 $end_url
之前添加商店 url???
这是适用于您的模型的函数的修订版本class:
public function repairSaveCarts($link_id, $base) {
$end_url = base64_encode(serialize($link_id));
$url = $base.$end_url;
$this->db->query("UPDATE " . DB_PREFIX . "save_cart SET shorturl = '" . $this->db->escape($url) . "' WHERE link_id = '" . (int)$link_id . "'");
}
您还应该满足 HTTPS 而不仅仅是 HTTP,因此将以下内容添加到控制器以获取站点 Url 并将该值传递给 'repair' 函数。这应该在对模型函数的现有调用之前完成:
// check if the request was made over HTTPS or not
if ($this->request->server['HTTPS']) {
$server = $this->config->get('config_ssl');
} else {
$server = $this->config->get('config_url');
}
$this->whateveryourmodelnameis->repairSaveCarts($link_id, $server);
我终于做到了。我替换这个:
public function repairSaveCarts($link_id, $base) {
$end_url = base64_encode(serialize($link_id));
$url = $base.$end_url;
$this->db->query("UPDATE " . DB_PREFIX . "save_cart SET shorturl = '" . $this->db->escape($url) . "' WHERE link_id = '" . (int)$link_id . "'");
}
模型文件中的这个:
public function repairSaveCarts($link_id) {
$end_url = base64_encode(serialize((int)$link_id));
if ($this->request->server['HTTPS']) {
$url = HTTPS_CATALOG . $end_url;
} else {
$url = HTTP_CATALOG . $end_url;
}
$this->db->query("UPDATE " . DB_PREFIX . "save_cart SET shorturl = '" . $this->db->escape($url) . "', date_added = NOW() WHERE link_id = '" . (int)$link_id . "'");
}
谢谢大牛的帮助。
我重制了一个扩展,所以我坚持了我必须做的最后一项工作。 我为管理员创建了一个树枝,它显示了一个列表,该列表从数据库中的 table 中获取数据。在列表的每一行中,我创建了一个按钮,用于修复 table 的特定单元格。所以每一行都有自己的id。
查看页面列表中的图像:
我制作了控制器文件,但我卡在必须完成其余工作的模型文件中。
在下面的代码中,我必须更改一些内容,以便通过按下修复按钮读取特定的 id。
public function repairSaveCarts($link_id=" ") {
$this->db->query("SELECT * FROM " . DB_PREFIX . "save_cart WHERE link_id = '" . (int)$link_id . "'");
$db_id = $this->db->getLastId();
$end_url = base64_encode(serialize($db_id));
$url = $this->config->get('config_url').$end_url;
$this->db->query("UPDATE " . DB_PREFIX . "save_cart SET shorturl = '" . $this->db->escape($url) . "' WHERE link_id = '" . (int)$db_id . "'");
}
我认为更改必须在 $db_id = $this->db->getLastId();
行中完成,但我不确定。
请有人帮忙。
我让它工作。我在控制器的 request->get | post
中有一个小语法错误,因此模型没有从按钮获得正确的 ID。
public function repairSaveCarts($link_id) {
$end_url = base64_encode(serialize((int)$link_id));
$url = $this->config->get('config_url').$end_url;
$this->db->query("UPDATE " . DB_PREFIX . "save_cart SET shorturl = '" . $this->db->escape($url) . "', date_added = NOW() WHERE link_id = '" . (int)$link_id . "'");
return $query->row;
}
我在 serialize
中注意到的一件事是,当模型从控制器获取 id 时,它收到的是 spring
值而不是 int
值。结果是给
id 10 ---> serialize value= s:2:"10";
为了解决这个问题,我在模型中添加了 serialize
之后的 (int)
值,现在给我正确的结果
id 10 ---> serialize value= i:10;
.
现在唯一的问题是,当模块从前端页面保存到数据库时,给我完整的 URL 站点:
https://www.example.com/aToxMDs=
但是在管理员端,修复保存到数据库的功能只给我:
aToxMDs=
行
$url = $this->config->get('config_url').$end_url;
好像不行。
我必须编辑什么才能在 $end_url
之前添加商店 url???
这是适用于您的模型的函数的修订版本class:
public function repairSaveCarts($link_id, $base) {
$end_url = base64_encode(serialize($link_id));
$url = $base.$end_url;
$this->db->query("UPDATE " . DB_PREFIX . "save_cart SET shorturl = '" . $this->db->escape($url) . "' WHERE link_id = '" . (int)$link_id . "'");
}
您还应该满足 HTTPS 而不仅仅是 HTTP,因此将以下内容添加到控制器以获取站点 Url 并将该值传递给 'repair' 函数。这应该在对模型函数的现有调用之前完成:
// check if the request was made over HTTPS or not
if ($this->request->server['HTTPS']) {
$server = $this->config->get('config_ssl');
} else {
$server = $this->config->get('config_url');
}
$this->whateveryourmodelnameis->repairSaveCarts($link_id, $server);
我终于做到了。我替换这个:
public function repairSaveCarts($link_id, $base) {
$end_url = base64_encode(serialize($link_id));
$url = $base.$end_url;
$this->db->query("UPDATE " . DB_PREFIX . "save_cart SET shorturl = '" . $this->db->escape($url) . "' WHERE link_id = '" . (int)$link_id . "'");
}
模型文件中的这个:
public function repairSaveCarts($link_id) {
$end_url = base64_encode(serialize((int)$link_id));
if ($this->request->server['HTTPS']) {
$url = HTTPS_CATALOG . $end_url;
} else {
$url = HTTP_CATALOG . $end_url;
}
$this->db->query("UPDATE " . DB_PREFIX . "save_cart SET shorturl = '" . $this->db->escape($url) . "', date_added = NOW() WHERE link_id = '" . (int)$link_id . "'");
}
谢谢大牛的帮助。