pdo - 在非对象上调用成员函数 prepare()

2022-08-31 00:43:17

此代码出现错误

致命错误:在第 42 行的 C:\Users\fel\VertrigoServ\www\login\validation.php上调用非对象上的成员函数 prepare()

法典:

   function repetirDados($email) {
        if(!empty($_POST['email'])) {

            $query = "SELECT email FROM users WHERE email = ?";

            $stmt = $pdo->prepare($query); // error line: line 42

            $email = mysql_real_escape_string($_POST['email']);

            $stmt->bindValue(1, $email);

            $ok = $stmt->execute();

            $results = $stmt->fetchAll(PDO::FETCH_ASSOC);

            if ($results == 0) {
                return true;
            } else {
                echo '<h1>something</h1>';
                return false;
            }
        }
    }

可能的原因是什么?另一个问题,什么等同于?对不起,我是pdo的新手mysql_num_rows


答案 1

$pdo未定义。您没有在函数中声明它,也没有将其作为参数传入。

您需要将其传入(好),或者在全局命名空间中定义它,并通过放在顶部(坏)来使其可用于函数。global $pdo


答案 2

你可以在同一个php页面中创建数据库连接函数,并随时调用该函数。如

public function connection()
{
    $dbc = new PDO("mysql:host=localhost;dbname=chat","root","");
} 
public function1()
{
   this->connection();
   // now you have the connection.. now, time for to do some query..
}

public function2()
{
  this->connection();
// now do query stuffs..
}

或者,您可以简单地在每次需要时在该页中写入数据库连接行。如

public function a()
{ // connecting DB for this function a only...
  $dbc = new PDO("mysql:host=localhost;dbname=chat","root","");
  // bla bla bla...
}
public function b()
{  // connecting DB for this function b only...
   $dbc = new PDO("mysql:host=localhost;dbname=chat","root","");
   // abra ke dabra... boom
}

推荐