根据文档,simple_query不会返回任何数据库结果集,也不会设置查询计时器,编译绑定数据或存储查询以进行调试。
与我的CodeIgniter一样,我使用CI提供的查询构建器来生成查询。
那么,如果插入,更新和删除这些查询构建器的工作方式与simple_query相同,或者它们在后台工作方式不同?
答案 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();
的适当和有用的地方。