php - 将 mysqli_num_rows 替换为 fetchColumn PDO >=1
问题描述
我有这个问题。基本上我想用第二个代码替换 if(mysqli_num_rows($result_password)>=1){
<?php
class DataBase {
private $DB_HOST = DBHOST;
private $DB_NAME = DBNAME;
private $DB_USER = DBUSER;
private $DB_PASS = DBPASS;
private $PDO;
public function __construct() {
$this->PDO = new PDO("mysql:host=".$this->DB_HOST."; dbname=".$this->DB_NAME, $this->DB_USER, $this->DB_PASS, array(PDO::MYSQL_ATTR_INIT_COMMAND => "SET NAMES utf8"));
}
public function select($query, $bindings = []) {
$STH = $this->PDO->prepare($query);
$STH->execute($bindings);
$result = $STH->fetchAll(PDO::FETCH_ASSOC);
return $result ? $result : false;
}
public function query($query, $bindings = []){
$STH = $this->PDO->prepare($query);
return $STH->execute($bindings);
}
public function selectOne($query, $bindings = []) {
$STH = $this->PDO->prepare($query);
$STH->execute($bindings);
$result = $STH->fetch(PDO::FETCH_ASSOC);
return $result ? $result : false;
}
}
我试图if(mysqli_num_rows($pw_result )>=1)
用这个替换 {:
if ($pw_result = $conn->query($pw_query)) {
if ($pw_result->fetchColumn() >=1) {
缺少查询:
$pw_query = "SELECT password FROM passwords WHERE password='$valid' AND executed='no'";
但它一直给我这个错误:致命错误:在布尔值上调用成员函数 fetchColumn()
我知道有很多关于这个的帖子,但我已经搜索并找不到它,这就是我在这里的原因,也许很简单。
解决方案
您的DataBase::query()
方法正在返回 的结果$STH->execute()
,它始终是/ true
successfalse
指示符。
如果你想使用查询的结果,函数应该返回$STH
。
推荐阅读
- authentication - Microsoft 流程:ForbiddenError-403,尝试在 MS 团队中创建私人频道时
- powershell - 脚本返回错误:“Get-Content : 指定路径的对象...不存在,或已被 -Include 或 -Exclude 参数过滤
- c++ - 请帮助我使用 c++ stl 中的 max_element 函数
- time-complexity - 树递归函数时间复杂度
- xcode - appium 检查器中的无限循环
- python - 在 pyscipopt 中将启发式强调设置为积极进取
- java - Anylogic - 根据代理位置获取资源
- ios - 找不到导入“模块'app_settings'”
- javascript - 将对象值分配给对象数组中具有不同值的数组
- python - 数据框中的节点特征到networkx图表列表