我有一个小型的MVC框架。
在db类中:
public static function getInstance() {
if (!self::$instance) {
//self::$instance = new PDO("mysql:host=".self::$servername.";dbname=".self::$db.", '".self::$user."', '".self::$pass."'");
// self::$instance-> setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
self::$instance = new mysqli(self::$servername, self::$user, self::$pass,self::$db);
if (self::$instance->connect_error) {
die("Connection failed: " . self::$instance->connect_error);
}
}
return self::$instance;
}
在我的课上:
$sql = "SELECT * FROM rego_details ORDER BY ".$order." ASC";
$db = $registry->db;
$result = $db->query($sql);
出于安全原因,我正在尝试使用准备好的语句,并正在使用此语句进行尝试(我知道此语句的用处不大,但是尽管如此,我仍在使用它,因为它是查看是否准备陈述起作用)
我尝试将其更改为:
if(!($stmt = $db->prepare('SELECT * FROM rego_details ORDER BY ? ASC'))){
echo 'prepare failed!';
}
if(!($stmt->bind_param("s", $order))){
echo 'bind failed!';
}
$stmt->execute();
$result = $stmt->get_result();
var_dump($result);
结果为NULL
还使用:
$stmt = $db->prepare('SELECT * FROM rego_details ORDER BY id ASC')
没有绑定将返回NULL
未准备好的语句可以正常工作。 $ order定义正确。