php - PHP 函数 (PhpStorm) 中的“找不到 PDO 方法”
问题描述
我在 php 中编写了一个函数,用于计算 MySQL 数据库中的行数,称为 count_series()。此函数工作正常,但是,PhpStorm 为以下以下函数提供了“未找到方法”错误:prepare()、execute()、rowCount()。
有谁知道这可能是什么原因?
/**
* Connects to the database
* @param $host
* @param $db
* @param $user
* @param $pass
* @return PDO
*/
function connect_db($host, $db, $user, $pass) {
$charset = 'utf8mb4';
$dsn = "mysql:host=$host;dbname=$db;charset=$charset";
$options = [
PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
];
try {
$pdo = new PDO($dsn, $user, $pass, $options);
} catch (\PDOException $e) {
echo sprintf("Failed to connect. %s",$e->getMessage());
}
return $pdo;
}
/**
* Returns the amount of series in the database
* @param $db
* @return mixed
*/
function count_series($db) {
$stmt = $db->prepare('SELECT COUNT(id) FROM ddwt18_week1.series');
$stmt->execute();
$count = $stmt->rowCount();
return $count;
}
解决方案
您到处都省略了类型提示,因此 PhpStorm(甚至是人类)无法自行解决。而不是这个:
function count_series($db) {
}
...我希望看到类似的东西:
function count_series(PDO $db): int {
}
...或者至少是这个(如果您需要支持早期的 PHP 版本)
function count_series(PDO $db) {
}
PDO
如果不是那个,请用实际的类名替换。
对于 dobclocks 也是如此(尽管如果代码是自记录的,那么它们在代码智能感知方面实际上是多余的)。而不是这个:
* @param $db
* @return mixed
... 用这个:
* @param PDO $db
* @return int
推荐阅读
- django - Django 模型表单 DateTimeField 表单验证错误
- relational-database - 关系代数中的查询
- vb.net - 在 vb.net 应用程序中添加数据不会更改 ms 访问数据库文件
- android - 如何从 Android 中的联系人中获取 ContactNumbers 数组的联系人姓名?
- c - do-while 循环进入 for 循环
- php - 我可以在 PowerShell 中的另一个变量中按名称设置变量值吗
- ios - 重新启用 Firebase 快照侦听器 (ListenerRegistration) Swift
- laravel - 如何忽略要上传到 Git 的文件夹?
- pagespeed - 此 PageSpeed Insight 报告中的“来源摘要”是什么意思?
- python - 如何决定是在脚本中实现scrapy还是将其用作框架