Вы пытаетесь получить доступ к переменной, созданной в глобальной области видимости, из функции.
Либо передайте переменную $conn
в качестве аргумента функции (это предпочтительный вариант), либо используйте ключевое слово 1006 * *, чтобы импортировать ее в область действия функции.
Чтобы вы могли сделать: (предпочтительный вариант)
function validate_details ($conn, $user, $pass) {
// function code goes here
}
// Call the function like this
$result = validate_details($conn, 'myuser', 'mypass');
... или это ... (не очень хорошо)
function validate_details ($user, $pass) {
global $conn;
// function code goes here
}
Есть много причин, по которым лучше передавать объект подключения в качестве параметра, но вот пара:
- Это означает, что вы можете использовать свою функцию с более чем одним соединением в одном сценарии
- Это означает, что вы можете легко перезапустить функцию без изменений в других скриптах
- Если в какой-то момент вам нужно переименовать переменную
$conn
в глобальной области видимости, вам не нужно беспокоиться об изменении ее в функции
Полагаю, также стоит упомянуть массив $GLOBALS
- это superglobal (то есть он доступен везде), который вы можете использовать вместо этого, но на практике это не так сильно отличается от ключевого слова global
и обычно его следует избегать по тем же причинам.
Вы можете использовать это так:
function validate_details ($user, $pass) {
// ...
$result = $GLOBALS['conn']->query($sql);
// ...
}