"PDO method not found" 内部 PHP 函数 (PhpStorm)
"PDO method not found" inside PHP Function (PhpStorm)
我在 php 中编写了一个函数,用于计算 MySQL 数据库中的行数,称为 count_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;
}
在return $pdo
下添加试试$pdo = new PDO($dsn, $user, $pass, $options);
并且还在函数 count_series()
内添加 $db=connect_db();
您到处都忽略了类型提示,因此 PhpStorm(甚至人类)无法自行弄清楚。而不是这个:
function count_series($db) {
}
...我希望看到类似的内容:
function count_series(PDO $db): int {
}
...或至少这个(如果您需要支持更早的 PHP 版本)
function count_series(PDO $db) {
}
如果 class 不是那个名字,请将 PDO
替换为实际名字。
dobclocks 也一样(尽管如果代码是自我记录的,那么在代码智能感知方面它们实际上是多余的)。而不是这个:
* @param $db
* @return mixed
...使用这个:
* @param PDO $db
* @return int
我在 php 中编写了一个函数,用于计算 MySQL 数据库中的行数,称为 count_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;
}
在return $pdo
下添加试试$pdo = new PDO($dsn, $user, $pass, $options);
并且还在函数 count_series()
内添加 $db=connect_db();
您到处都忽略了类型提示,因此 PhpStorm(甚至人类)无法自行弄清楚。而不是这个:
function count_series($db) {
}
...我希望看到类似的内容:
function count_series(PDO $db): int {
}
...或至少这个(如果您需要支持更早的 PHP 版本)
function count_series(PDO $db) {
}
如果 class 不是那个名字,请将 PDO
替换为实际名字。
dobclocks 也一样(尽管如果代码是自我记录的,那么在代码智能感知方面它们实际上是多余的)。而不是这个:
* @param $db
* @return mixed
...使用这个:
* @param PDO $db
* @return int