이것은 매우 쉬운 것처럼 보이지만, 저의 삶은 왜 이것이 작동하지 않는지 알 수 없습니다. 단순히 객체에 함수를 전달하려고하는데 다음과 같은 에러가 발생합니다 :함수의 매개 변수로 객체를 전달하지 않습니다.
catch 가능한 치명적 오류 : write_query()에 전달 된 인수 3은 C : \ xampp \ htdocs에서 호출 된 mysqli의 인스턴스 여야합니다. \ CSP의 \ 로그인 \ 라인 (28)에 login.php와 C에서 정의 : \ XAMPP \ htdocs를 \ CSP \ php_scripts \ login_script.php 라인 (40)
이 제 기능 정의입니다 : 내가
function conn_database()
{
if (!empty($_POST['userid']) && !empty($_POST['password']))
{
$conn = new mysqli('localhost', 'root', '', 'csp');
if (mysqli_connect_errno())
{
echo 'Connection to database failed:'.mysqli_connect_error();
exit();
}
return $conn;
}
}
function write_query($userid, $password, mysqli $conn)
{
$query = 'select * from authorized_users '
."where userid= '$userid'"
."and password_id='$password'";
$result = $conn->query($query);
return $result;
}
다음과 같이 호출합니다.
$conn = conn_database();
$result = write_query($userid, $password, $conn);
나는 write_query()의 정의에 힌팅을 사용하고 있지만, 오류에서 이해할 수있는 것으로부터 세 번째 인자는 mysqli의 인스턴스로 간주되지 않는다. (저는 암호를 모두 소금으로 만들어야한다는 것을 알고 있습니다. 먼저 이것을 작동 시키려고합니다.) 모든 제안은 인정 될 것입니다
이 줄은'false ($ _ POST [ 'userid']) &&! empty ($ _ POST [ 'password']))'를 반환합니다. 'get_connection' 안에'var_dump ($ _ POST)'를 쓰면 문제를 디버그하는 데 도움이됩니다. –
conn_database() 함수는 아마도 NULL을 반환합니다. 나는 if 문장 ($ _POST ...)의 요점을 볼 수 없다. 전혀 이해가되지 않는다. – bestprogrammerintheworld
@bestprogrammerintheworld OP 로직은 사용자가 로그인 ('login.php') 자격증 명을 제출할 때만 데이터베이스에 연결하려고한다는 것입니다. – Prisoner