我一辈子都无法绑定到使用 PDO 查询,它们总是返回 false。
在这个例子中,它检查一个字段的值是否在两个其他值之间。
这有效:
$query = $db->query("SELECT * FROM table WHERE field1 > '$start' AND field1 < '$finish'");
这不会:
$query = $db->query("SELECT * FROM table WHERE field1 > :start AND field1 < :finish");
$query->bindParam(":start", $start);
$query->bindParam(":finish", $finish);
更新:由于帮助,上述查询现在可以工作。下面还是不行。
我一直在这里浏览各种 PDO 帖子,但我没有找到解决方案,我不知道还有什么可以尝试的。
UPDATE2:好的,它似乎没有找到$db,因此没有连接并返回false。$db 连接行位于所有主页所需的 connect.php 文件中。这些页面上的内容由包含相关文件/页面的函数调用。因为PDO在函数中自己不起作用,是不是通过函数丢失了$db来包含包含查询的文件?我可能解释得不够清楚。
基本上,functions.php 中的示例函数:
function getRegistration() {
include("registration.php");
}
主文件
require_once("connect.php");
require_once("functions.php");
getRegistration();
registration.php 包含:
$sql = $db->prepare("INSERT INTO tempus_members(username, email, password, activation_code, registration_date, registered_ip, name) VALUES(:username, :email, :password, :activation_code, :registration_date, :registered_ip, :name)");
$sql->bindParam(":username", $username);
$sql->bindParam(":email", $email);
$sql->bindParam(":password", $hash);
$sql->bindParam(":activation_code", $activation_code);
$sql->bindParam(":registration_date", $registration_date);
$sql->bindParam(":registered_ip", $registered_ip);
$sql->bindParam(":name", $name);
$sql->execute();
是否通过包含页面的函数丢失了 $db 变量?如果是这样,我如何通过所有功能携带 $db ?