gpt4 book ai didi

php - PDO:绑定(bind)问题,所有查询都返回 false

转载 作者:太空宇宙 更新时间:2023-11-03 12:33:03 26 4
gpt4 key购买 nike

我这辈子都无法绑定(bind) PDO 查询,它们总是返回 false。

在此示例中,它检查字段的值是否介于其他 2 个值之间。

这个有效:

$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 帖子,但我没有找到解决方案,而且我不知道还能尝试什么。

更新 2:好的,它似乎没有找到 $db,因此没有连接并返回 false。 $db 连接线位于所有主页都需要的 connect.php 文件中。这些页面上的内容由包含相关文件/页面的函数调用。因为PDO本身在函数中不起作用,是不是通过函数把包含查询的文件include掉了$db?我可能解释得不够清楚。

基本上,functions.php 中的示例函数:

function getRegistration() {
include("registration.php");
}

主.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?

最佳答案

尝试:

$stmt = $db->prepare("SELECT * FROM table WHERE field1 > :start AND field1 < :finish");
$stmt->bindParam(":start", $start);
$stmt->bindParam(":finish", $finish);
$stmt->execute();

您使用的是 PDO::query而不是 PDO::prepare .

至于其他查询,您返回了什么错误?试试下面的代码,看看是否有任何错误出现在页面上:

$db->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

try{
$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();

}
catch(PDOException $e){
echo $e->getMessage();
}

关于php - PDO:绑定(bind)问题,所有查询都返回 false,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14483673/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com