我正在尝试将所有标准MySQLi查询重写为MySQLi Prepared Statements。
我注意到了一个问题,每当我有一个包含连字符的变量时,execute()就会失败。
我正在处理的变量($ project_id)如下所示:'AAD0012003-01'。
$get_progress_done = $db->prepare("SELECT COUNT(*) as rows FROM testvoorstage_checklists.?");
$get_progress_done->bind_param("s", $project_id);
$get_progress_done->execute();
$get_progress_done->store_result();
$get_progress_done->bind_result($rows);
while($get_progress_done->fetch()) {
echo $rows;
}
我现在一直在寻找一个解决方案,我仍然没有找到一种方法来“逃避”变量中的连字符。
我知道查询确实有效,因为我已经在PHPMyAdmin中使用set变量尝试了它们,并且它们在那里工作正常。
我正在学习准备语句,我很想知道如何解决这个问题,因为我有很多包含特殊字符的变量。
我得到的错误是:
在非对象
上调用成员函数bind_param()
答案 0 :(得分:0)
$db->prepare
是什么$get_progress_done
返回的内容都不是$sql = "SELECT COUNT(*) as rows FROM projects where project_id = ?";
$stmt = $db->prepare($sql);
$stmt->bind_param("s", $project_id);
$stmt->execute();
$stmt->bind_result($rows);
$stmt->fetch();
echo $rows;
- 它只是一个mysqli声明。所以,这段代码会做
{{1}}
但是,在我的生活中,我永远不会理解编写7行代码的PHP用户,其中只有一行是足够的。