복붙노트

pdo - 멤버 함수 호출 prepare () 비 - 객체 [duplicate]

PHP

pdo - 멤버 함수 호출 prepare () 비 - 객체 [duplicate]

이 코드는 오류가 발생합니다.

암호:

   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;
            }
        }
    }

가능한 원인은 무엇입니까? 또 다른 질문은 mysql_num_rows와 동등한 것입니다. 미안, 나는 pdo를 가진 초보자이다.

해결법

  1. ==============================

    1.$ pdo는 정의되지 않았습니다. 함수 안에서 선언하지 않고 인수로 전달되지 않습니다.

    $ pdo는 정의되지 않았습니다. 함수 안에서 선언하지 않고 인수로 전달되지 않습니다.

    그것을 전달하거나 (좋은) 글로벌 네임 스페이스에서 정의하고 전역 $ pdo를 맨 위에 배치하여 함수에서 사용할 수 있도록해야합니다 (좋지 않음).

  2. ==============================

    2.동일한 PHP 페이지에서 데이터베이스 연결 기능을 만들고 필요할 때마다 해당 함수를 호출 할 수 있습니다. 같이,

    동일한 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
    }
    
  3. ==============================

    3.$ pdo 객체가 함수 내에서 범위 내에 있지 않습니다.

    $ pdo 객체가 함수 내에서 범위 내에 있지 않습니다.

  4. ==============================

    4.@Anvd. 나는 똑같은 문제가 있었지만 동일한 페이지에 데이터베이스를 연결하여 연결하는 페이지를 포함시키지 않고 해결했습니다. 그것은 나를 위해 일했다.

    @Anvd. 나는 똑같은 문제가 있었지만 동일한 페이지에 데이터베이스를 연결하여 연결하는 페이지를 포함시키지 않고 해결했습니다. 그것은 나를 위해 일했다.

    <?php
    try {
    $pdo = new PDO('mysql:host=localhost;dbname=tish_database;charset=utf-8','root','');
    
    } catch(PDOException $e){
    echo 'Connection failed'.$e->getMessage();
    }
    
    ?>
    
  5. ==============================

    5.PDO에서 mysql_num_rows에 해당하는 것은 기본적으로 FETCH_NUM이며 선택된 행의 인덱스 번호를 반환합니다.

    PDO에서 mysql_num_rows에 해당하는 것은 기본적으로 FETCH_NUM이며 선택된 행의 인덱스 번호를 반환합니다.

  6. ==============================

    6.나는 똑같은 오류를 겪고있었습니다. 그런 다음 PDO 연결을 종료 한 후 수업을 호출하는 것을 보았습니다.

    나는 똑같은 오류를 겪고있었습니다. 그런 다음 PDO 연결을 종료 한 후 수업을 호출하는 것을 보았습니다.

  7. ==============================

    7.예, 나는 또한 이것을 어려운 방법으로 배웠습니다. 함수 내에서 DB 연결을 열어야합니다. DB에 대한 연결은 함수를 호출하기 전에 열지 만 함수 내부에서 열릴 것이라고 가정합니다. 그래서:

    예, 나는 또한 이것을 어려운 방법으로 배웠습니다. 함수 내에서 DB 연결을 열어야합니다. DB에 대한 연결은 함수를 호출하기 전에 열지 만 함수 내부에서 열릴 것이라고 가정합니다. 그래서:

    function whatever(){ 
      //OPEN DB CONNECTION
    
      CODE
    
      //CLOSE DB
    return whateverValue;
    } 
    
  8. ==============================

    8.버퍼링되지 않은 활성 u 리에서이 오류를 계속 가져올 수도 있습니다.

    버퍼링되지 않은 활성 u 리에서이 오류를 계속 가져올 수도 있습니다.

    그래서, 라인 41에서,

    $stmt = null;
    
  9. ==============================

    9.이 코드를 시험해 보라.

    이 코드를 시험해 보라.

    $query =$pdo->prepare("SELECT email FROM users WHERE email = ?");
    
    $email = mysql_real_escape_string($_POST['email']);
    
    $stmt->bindValue(1, $email);
    
    $ok = $stmt->execute();
    
    $results = $query->fetchAll(PDO::FETCH_ASSOC);
    
    if ($results == 0) {
        return true;
    } else {
        echo '<h1>something</h1>';
        return false;
    }
    
  10. from https://stackoverflow.com/questions/5346186/pdo-call-to-a-member-function-prepare-on-a-non-object by cc-by-sa and MIT license