Codeigniter simple_query与查询构建器(插入,更新和删除)

时间:2018-01-01 11:34:52

标签: php mysql codeigniter

根据文档,simple_query不会返回任何数据库结果集,也不会设置查询计时器,编译绑定数据或存储查询以进行调试。

与我的CodeIgniter一样,我使用CI提供的查询构建器来生成查询。

那么,如果插入,更新和删除这些查询构建器的工作方式与simple_query相同,或者它们在后台工作方式不同?

1 个答案:

答案 0 :(得分:1)

import javafx.application.Application; import javafx.stage.Stage; import javafx.scene.Group; import javafx.scene.Scene; import javafx.scene.canvas.Canvas; import javafx.scene.canvas.GraphicsContext; import javafx.scene.image.Image; import javafx.scene.control.Button; import javafx.animation.AnimationTimer; public class Orbit extends Application { private static int WINDOW_WIDTH = 500; private static int WINDOW_HEIGHT = 500; private static int EARTH_RADIUS = 100; private static int EARTH_ORBIT_RADIUS = 128; private static int SUN_RADIUS = 100; public static void main(String[] args) { launch(args); } public void start(Stage stage) { stage.setTitle("Orbit"); Group root = new Group(); Scene theScene = new Scene(root); stage.setScene(theScene); Canvas canvas = new Canvas(WINDOW_WIDTH, WINDOW_HEIGHT); GraphicsContext gc = canvas.getGraphicsContext2D(); Image earth = new Image("earth.png", EARTH_RADIUS, EARTH_RADIUS, false, false) , sun = new Image("sun.png", SUN_RADIUS, SUN_RADIUS, false, false) , space = new Image("space.png"); final long startNanoTime = System.nanoTime(); final AnimationTimer timer = new AnimationTimer() { @Override public void handle(long currentNanoTime) { double t = (currentNanoTime - startNanoTime) / 1000000000.0; int centerX = (WINDOW_WIDTH - SUN_RADIUS) / 2 , centerY = (WINDOW_HEIGHT - SUN_RADIUS) / 2; double x = centerX + EARTH_ORBIT_RADIUS * Math.cos(t) , y = centerY + EARTH_ORBIT_RADIUS * Math.sin(t); gc.drawImage(space, 0, 0); gc.drawImage(earth, x, y); gc.drawImage(sun, centerX, centerY); } }; Button btn = new Button("Start"); btn.setOnMousePressed(actionEvent -> timer.start()); root.getChildren().addAll(btn, canvas); stage.show(); } } 是CodeIgniter中唯一的行为与您指出的一样的数据库方法。正如文档所述:"大多数用户很少使用此功能。"

除了少数例外情况,所有其他Query Builder方法都返回simple_query()实例和DB_query_builder对象,或者 - " write" type queries - 一个表示成功或失败的布尔值。少数例外返回整数,字符串或混合(值或FALSE)。

所有接受输入值的方法都会转义(或者不会转义)提供的值。

虽然查询生成器(QB)是一个很棒的工具,但它通常不是必需的。使用CI_DB_result通常更有效。理解QB的目标是创建一个字符串,用于调用$this->db->query('your statement here');

所以不要输入所有这些......

db->query('a query string');

键入以下内容会产生与上面完全相同的结果,因为它直接提供了QB在上面的代码中构建的查询字符串。 (查询也完全转义了。)但它执行的代码少了很少。 (少输入。)

$this->db->select('id, name, email');
$this->db->from('customers');
$this->db->where('id', $id)
$this->db->where('active', $is_active)
$query = $this->get();
$result = $query->result();

这是使用Query Binding

的示例

研究核心源代码(主要在'驱动程序'文件中)将向您显示使用$query = $this->db->query("Select id, name, email from customers where id = ? and active = ?", [$id, $is_active]); $result = $query->result(); 的适当和有用的地方。