我目前有一个数据库调用,它可以在一个区域工作,但不能在另一个区域工作。
我的数据库类被标记为 $database 并将$db
PDO 对象传递给数据库构造函数。
这一切都很好。
此代码调用有效
$user_info = $database->get_user($user);
这个函数被称为
public function get_user($user){
$user = $this->db->quote($user);
$query = "SELECT * FROM login where username = $user";
$user = $this->db->query($query);
$user_info = $user->fetch();
return $user_info;}
这将按预期返回用户信息
另一个电话是
$user = $database->confirm($confirm);
$user_info = $database->get_user($user);
确认函数如下所示
public function confirm($confirm){
$confirm = $this->db->quote($confirm);
$query = "SELECT * FROM temp_data WHERE hash = $confirm;";
$count = $this->db->query($query);
$info = $count->fetch();
$user = $info['username'];
$user = $this->db->quote($user);
$query = "DELETE FROM temp_data WHERE username = $user;";
$this->db->exec($query);
$query = "UPDATE login SET confirm = '1' WHERE username = $user;";
$this->db->exec($query);
return $info['username'];}
这个电话完美地工作。
它以不带引号的格式返回用户名,get_user
接受
然而get_user
失败
我已经完成了故障排除,发现问题是下面的行get_user
没有返回任何 PDO 对象,或者根本没有返回任何数据
$user = $this->db->query($query);
这是有趣的部分。我做了一个尝试捕获,PDO 没有抛出任何 PDO 异常,它甚至没有抛出一般异常。错误日志中没有错误。它似乎不起作用。我已经逐步使用Print_r
,get_class
和 echo
adie;
来输出我的结果,这一切都可以正常工作,直到我进行第二次数据库调用。fetch 正在返回一个错误,但这只是因为 exec 似乎根本没有运行
我确实尝试unset()
在所有东西上使用,但我的主数据库连接在创建时创建并传递到我的数据库对象中
这是脚本运行时发生的情况
- 用户点击带有随机哈希的链接
- 系统从 GET 中获取哈希值,然后使用它从临时数据库中提取用户名。
- 然后将用户修改为已确认,删除临时条目,然后返回用户名
- 然后从这里调用
get_user
. 在这种情况下,它只是返回用户信息来设置 twilio 子帐户。这是系统出现故障的地方 - 之后会发生什么(它确实尝试从我的测试中做,因为我在这里遇到错误)是它访问 twilio API,获取子帐户 AUTH 和 SID 令牌并将其写入用户文件
- 然后新用户被重定向到登录页面
我曾尝试使用关闭光标,但没有奏效。
如果有人可以让我深入了解我遇到的问题,或者我做错了什么,我将不胜感激。我是使用 PDO 对象的新手,所以我确信我在某个地方犯了一个愚蠢的错误。