php - 不能使用准备好的语句
问题描述
我有一个小的 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);
出于安全原因,我正在尝试使用准备好的语句,并正在使用此语句进行尝试(我知道它对这个语句没有多大用处,但我仍然使用它,因为它是一个简单的语句来查看是否 prep. statements工作)
我尝试将其更改为:
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);
结果为空
还使用:
$stmt = $db->prepare('SELECT * FROM rego_details ORDER BY id ASC')
没有绑定返回 NULL
未经准备的陈述工作正常。$order 定义正确。
解决方案
推荐阅读
- python - 使用 Tensorflow 轻松检查自定义渐变
- java - org.apache.http.conn.HttpHostConnectException:连接到 http://localhost 被拒绝
- c# - 组合框 - 初始值是正确的,之后的任何调用都会在投射期间出现错误
- azure - Azure SQL PaaS 和 Azure Policy 交互
- python - 无法导入木偶
- android - 迁移到 Gradle 3.0.0 时出现foregroundInsidePadding 错误
- c++ - 仅优化 Debug 配置中的单个方法
- vba - VBA 中 WITH 语句、IF 语句和 VLOOKUP 公式的操作顺序
- android - 音乐应用程序和数据库访问
- python - Python魔术元类创建