При использовании mysqli_stmt :: bind_param первым аргументом является тип данных bind_param('s', $variable)
https://php.net/manual/en/mysqli-stmt.bind-param.php
Кроме того, MySQLi не поддерживает именованные параметры в отличие от PDO
Вам потребуетсячтобы изменить код для работы с MySQLi, настройте типы данных по мере необходимости.
//...
$insert = "INSERT INTO `".$steamid."` (steamid, freeze, access, tos, balance, age, email, tradeurl, fullname)
VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)";
$stmt = $dbc->prepare($insert);
$stmt->bind_param('sssssssss',
$steam64,
$freeze,
$access,
$tos,
$balance,
$age,
$email,
$tradeurl,
$fullname
);
//...
Советы / предложения:
Я рекомендую вам использовать оператор строгого сравнения === TRUE
, это хорошая практика для принятия.
Закрытие соединений с базой данных
Вам нужно вызывать только один тип mysqli::close
, поскольку они выполняют одну и ту же функцию, mysqli_close($dbc);
не требуется.
$dbc->close();
///mysqli_close($dbc);
Включить операторы
Вам не нужно переносить include
путей в скобках.Это просто дополнительные издержки, которые лексер не должен обрабатывать.include
require
и их _once
варианты являются языком PHP управляющими структурами , а не вызовами функций.
Кроме того, вы всегда должны указывать полный путь, чтобы избежать неоднозначности, избегая поиска include_path
, когда файл не найден, и потенциальных уязвимостей в пути.
Кроме того, чтобы избежать ненужной загрузки конфигурационных сценариев несколько раз, таких как подключение к базе данных, на которое полагаются ваши другие сценарии, вы можете использовать require_once
.
Пример:
require_once __DIR__ . '/../../../mysql_connect/mysqli_connect_accounts.php';
Сеансы
Вы должны всегда проверять, существует ли уже сессия, прежде чем использовать session_start
.
if (!session_id()) {
session_start();
}
Рекомендуется также восстановить идентификатор сеанса, используя session_regenerate_id()
, чтобы избежать перехвата сеанса.Источник: http://php.net/manual/en/features.session.security.management.php#features.session.security.management.session-id-regeneration
Использование одинарных / двойных кавычек
Настоятельно рекомендуется использовать только одинарные кавычки.
Помимо незначительной производительностиПотеря при использовании двойных кавычек, смешивание одинарных и двойных кавычек в вашем коде часто приводит к путанице и трудностям поиска ошибок.Значения в одинарных кавычках обрабатываются как буквенные строки и всегда приводят к вводимому вами значению и не требуют экранирования.При использовании двойных кавычек лексер анализирует строку, чтобы определить, есть ли специальные символы, которые необходимо интерпретировать, например, используя $
или \
.
http://php.net/manual/en/language.types.string.php
Исключением является случай, когда вам нужно использовать специальные символы, такие как \r \n \t
и т. Д., Для обработки которых лексеру требуются двойные кавычки.
Например:
echo 'Hello you owe $money';
//vs
echo 'Hello you owe ' . $money;
//vs
echo "Hello you owe $money";
//vs
echo "Hello you owe \$money";