Вы prepare()
оператор выглядит так, как будто он должен работать ...
Также, как сказал Алекс Хованский:
Не полагайтесь на функции real_escape_string (), чтобы предотвратить внедрение SQL, их одного недостаточно. Вы должны использовать подготовленные операторы со связанными параметрами через mysqli или PDO. В этом посте есть несколько хороших примеров.
См .: Как я могу предотвратить внедрение SQL в PHP?
Вы также должны удалить одинарные кавычки вокруг вопросительных знаков ...
ПОПРОБУЙТЕ ЭТО:
$server = "localhost";
$user = "root";
$pass = "";
$selected_db = "User";
$selected_table = "usersbio";
// Create connection
$linking = new mysqli($server, $user, $pass, $selected_db);
// Input variable
$firstname = mysqli_real_escape_string($linking, $_POST['firstname']);
$lastname = mysqli_real_escape_string($linking, $_POST['lastname']);
$userpass = mysqli_real_escape_string($linking, $_POST['userpass']);
$useremail = mysqli_real_escape_string($linking, $_POST['useremail']);
$udob_d = mysqli_real_escape_string($linking, $_POST['userdobd']);
$udob_m = mysqli_real_escape_string($linking, $_POST['userdobm']);
$udob_y = mysqli_real_escape_string($linking, $_POST['userdoby']);
$hashingpass = password_hash($userpass, PASSWORD_DEFAULT);
// Saving data to db - table
$stmt = $linking->prepare("INSERT INTO $selected_table (userfirstname,
userlastname, userpasskey, useremail, userdobd, userdobm, userdoby)
VALUES (?, ?, ?, ?, ?, ?, ?)");
$stmt->bind_param('ssssisi', $firstname,
$lastname, $hashingpass, $useremail, $udob_d, $udob_m, $udob_y);
$stmt->execute();
$linking->close();
ЭТО ОБНОВЛЕННЫЙ ЗАПРОС:
INSERT INTO $selected_table (userfirstname, userlastname, userpasskey, useremail, userdobd, userdobm, userdoby)
VALUES (?, ?, ?, ?, ?, ?, ?)
Если вам нужна дополнительная помощь с подготовленными заявлениями, посмотрите эту ссылку:
http://php.net/manual/en/mysqli.quickstart.prepared-statements.php