반응형
두 개의 입력 매개 변수를 사용하여 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
반응형
'MySql' 카테고리의 다른 글
MySQL Ubuntu 12.04-RubyOnRails-gem install mysql2가 설치되는 것 같지만 설치하면 실패합니다 : gem mysql2-Unknown command mysql2 (0) | 2021.02.11 |
---|---|
MySQL 워드 프레스 테마에 아약스를 추가하는 방법 (0) | 2021.02.11 |
MySQL 데이터베이스에 IP 주소 저장 (IPv4 및 IPv6) (0) | 2021.02.11 |
MySQL sql_mode의 특정 값을 어떻게 볼 수 있습니까? (0) | 2021.02.11 |
MySQL SQL SELECT NOW () (0) | 2021.02.11 |
댓글