mysql在php函数(phpstorm)中“找不到pdo方法”

dgjrabp2  于 2021-06-19  发布在  Mysql
关注(0)|答案(2)|浏览(804)

我用php编写了一个函数,用于计算mysql数据库中的行数,名为count\u series()。此函数工作正常,但是phpstorm为以下函数提供了一个“method not found”错误:prepare()、execute()、rowcount()。
有人知道这是什么原因吗?

  1. /**
  2. * Connects to the database
  3. * @param $host
  4. * @param $db
  5. * @param $user
  6. * @param $pass
  7. * @return PDO
  8. */
  9. function connect_db($host, $db, $user, $pass) {
  10. $charset = 'utf8mb4';
  11. $dsn = "mysql:host=$host;dbname=$db;charset=$charset";
  12. $options = [
  13. PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION,
  14. PDO::ATTR_DEFAULT_FETCH_MODE => PDO::FETCH_ASSOC,
  15. ];
  16. try {
  17. $pdo = new PDO($dsn, $user, $pass, $options);
  18. } catch (\PDOException $e) {
  19. echo sprintf("Failed to connect. %s",$e->getMessage());
  20. }
  21. return $pdo;
  22. }
  23. /**
  24. * Returns the amount of series in the database
  25. * @param $db
  26. * @return mixed
  27. */
  28. function count_series($db) {
  29. $stmt = $db->prepare('SELECT COUNT(id) FROM ddwt18_week1.series');
  30. $stmt->execute();
  31. $count = $stmt->rowCount();
  32. return $count;
  33. }
e5njpo68

e5njpo681#

添加内部尝试 return $pdo 低于 $pdo = new PDO($dsn, $user, $pass, $options); 还有内部功能 count_series() 添加 $db=connect_db();

pdkcd3nj

pdkcd3nj2#

你在任何地方都忽略了类型暗示,所以phpstorm(甚至一个人)没有办法自己去理解。而不是这样:

  1. function count_series($db) {
  2. }

... 我希望看到这样的景象:

  1. function count_series(PDO $db): int {
  2. }

... 或者至少是这样(如果您需要支持早期的php版本)

  1. function count_series(PDO $db) {
  2. }

请更换 PDO 如果不是那个,就用实际的类名。
dobclocks也是如此(尽管当涉及到代码instellisense时,如果代码是自文档化的,那么它们实际上是多余的)。而不是这样:

  1. * @param $db
  2. * @return mixed

... 使用此选项:

  1. * @param PDO $db
  2. * @return int
展开查看全部

相关问题