我用php编写了一个函数,用于计算mysql数据库中的行数,名为count\u series()。此函数工作正常,但是phpstorm为以下函数提供了一个“method not found”错误: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;
}
2条答案
按热度按时间e5njpo681#
添加内部尝试
return $pdo
低于$pdo = new PDO($dsn, $user, $pass, $options);
还有内部功能count_series()
添加$db=connect_db();
pdkcd3nj2#
你在任何地方都忽略了类型暗示,所以phpstorm(甚至一个人)没有办法自己去理解。而不是这样:
... 我希望看到这样的景象:
... 或者至少是这样(如果您需要支持早期的php版本)
请更换
PDO
如果不是那个,就用实际的类名。dobclocks也是如此(尽管当涉及到代码instellisense时,如果代码是自文档化的,那么它们实际上是多余的)。而不是这样:
... 使用此选项: