본문 바로가기
MySql

MySQL in 매개 변수를 사용하여 PHP 호출 mysql 저장 프로 시저

by 베이스 공부 2021. 2. 11.
반응형

두 개의 입력 매개 변수를 사용하여 mysql 저장 프로 시저를 호출하고 있습니다. 이것은 내가 가진 코드입니다.

if (isset($_POST['button1'])) {
    $con = mysql_connect("localhost:3306","root","");
    if (!$con) {     
        echo '<b>Could not connect.</b>';
        die(mysql_error()); // TODO: better error handling
    } else {          
        mysql_select_db("php_database_1", $con);

        $username_v = $_POST['username'];
        $password_v = $_POST['password'];

        $stmt = $dbh->prepare("CALL login(?, ?)");
        $stmt->bindParam(2, $username_v, $password_v, PDO::PARAM_STR|PDO::PARAM_INPUT_OUTPUT, 4000); 

        // call the stored procedure
        $stmt->execute();

        print "procedure returned $username_v\n";

실행할 때 다음을 얻습니다.

알림 : 정의되지 않은 변수 : E : \ xampp \ htdocs \ php4 \ default.php의 dbh on line 52 치명적 오류 : 52 번 줄의 E : \ xampp \ htdocs \ php4 \ default.php에있는 비 객체의 멤버 함수 prepare () 호출

이 문제를 어떻게 해결할 수 있습니까?

감사.

 

해결 방법

 

수정 됨 : 더 많은 코드를 본 후 mysql _ () 함수를 PDO와 혼합하려고했습니다. 그렇게 할 수 없습니다. 대신 PDO 만 사용하십시오. 두 API는 함께 작동하지 않으며 이전 mysql _ * () API는 준비된 명령문을 전혀 지원하지 않습니다.

데이터베이스에 연결하지 않았거나 PDO 개체를 인스턴스화하지 않았습니다.

$username_v = $_POST['username'];
$password_v = $_POST['password'];
$dsn = 'mysql:dbname=testdb;host=127.0.0.1';

// You must first connect to the database by instantiating a PDO object
try {
    $dbh = new PDO($dsn, 'root', 'root_db_pw');
} catch (PDOException $e) {
    echo 'Connection failed: ' . $e->getMessage();
}

// Then you can prepare a statement and execute it.    
$stmt = $dbh->prepare("CALL login(?, ?)");
// One bindParam() call per parameter
$stmt->bindParam(1, $username_v, PDO::PARAM_STR); 
$stmt->bindParam(2, $password_v, PDO::PARAM_STR); 

// call the stored procedure
$stmt->execute();

 

참조 페이지 https://stackoverflow.com/questions/10589273

 

 

반응형

댓글