>백엔드 개발 >PHP 튜토리얼 >내 MySQLi 준비 명령문이 '비객체에서 멤버 함수 실행() 호출' 오류를 발생시키는 이유는 무엇입니까?

내 MySQLi 준비 명령문이 '비객체에서 멤버 함수 실행() 호출' 오류를 발생시키는 이유는 무엇입니까?

Barbara Streisand
Barbara Streisand원래의
2024-12-09 18:07:15171검색

Why Does My MySQLi Prepared Statement Throw a

mysqli 준비된 명령문 이해

mysqli에서 준비된 명령문을 사용할 때 올바른 기능을 보장하려면 특정 지침을 준수하는 것이 중요합니다.

오류 해결

제공된 코드에서 오류:

Fatal error: Call to a member function execute() on a non-object in ...

실행 전에 준비된 문이 변수에 올바르게 바인딩되지 않았음을 제안합니다. 이 문제를 해결하려면:

// Bind parameters to variables
$name = 'one';
$age = 1;
$stmt->bind_param('si', $name, $age);

Prepared 문에 mysqli 사용

Mysqli는 PHP에서 준비된 문을 사용하는 데 적합한 선택입니다. 확립되고 잘 문서화되어 있는 데이터베이스 인터페이스입니다.

준비된 문이 포함된 전체 예

<?php

// Establish database connection
$mysqli = new mysqli('localhost', 'root', 'root', 'test');

// Prepare statement
$stmt = $mysqli->prepare('INSERT INTO users (name, age) VALUES (?, ?)');

// Bind variables
$name = 'one';
$age = 2;
$stmt->bind_param('si', $name, $age);

// Insert data with prepared statement
$stmt->execute();

// Check for errors
if ($mysqli->error) {
    echo 'Error: ' . $mysqli->error;
} else {
    // Data inserted successfully
}

// Prepare select statement
$stmt = $mysqli->prepare('SELECT * FROM users WHERE name = ?');

// Bind variable
$name = 'one';
$stmt->bind_param('s', $name);

// Execute select query
$stmt->execute();

// Fetch results
$result = $stmt->get_result();
while ($row = $result->fetch_assoc()) {
    echo $row['id'] . ' - ' . $row['name'] . ' - ' . $row['age'] . '<br>';
}

// Close statement and connection
$stmt->close();
$mysqli->close();

?>

이 포괄적인 예는 연결 설정부터 준비된 문을 사용하여 데이터 삽입 및 선택까지의 전체 프로세스를 보여줍니다. 오류 처리를 포함합니다.

위 내용은 내 MySQLi 준비 명령문이 '비객체에서 멤버 함수 실행() 호출' 오류를 발생시키는 이유는 무엇입니까?의 상세 내용입니다. 자세한 내용은 PHP 중국어 웹사이트의 기타 관련 기사를 참조하세요!

성명:
본 글의 내용은 네티즌들의 자발적인 기여로 작성되었으며, 저작권은 원저작자에게 있습니다. 본 사이트는 이에 상응하는 법적 책임을 지지 않습니다. 표절이나 침해가 의심되는 콘텐츠를 발견한 경우 admin@php.cn으로 문의하세요.