Тип, который вы указываете в bind_param
, сообщает PHP, как ему следует преобразовать значение. В 99,99% случаев вы должны преобразовать его как строку, чтобы не столкнуться с проблемами. Если вы приведете его как целое число, PHP выполнит обычное преобразование . Поскольку tett
не может быть преобразовано в правильное число, PHP просто преобразует его в 0
.
Кстати, вы должны не забыть включить отчеты об ошибках для mysqli. Поместите эту строку перед mysqli_connect()
:
mysqli_report(MYSQLI_REPORT_ERROR | MYSQLI_REPORT_STRICT);
Вы также можете упростить свой код, если удалите все ненужное.
<?php
include 'db_connect.php';
// Prepare an insert statement
$sql = "INSERT INTO admin (test_int, username, password, maname) VALUES (?, ?, ?, ?)";
$stmt = $con->prepare($sql);
// Bind variables to the prepared statement as parameters
$stmt->bind_param("ssss", $id, $username, $password, $maname);
// Set parameters
$id = "tett";
$username = "New username"; //$_REQUEST['first_name'];
$password = "New password"; //$_REQUEST['last_name'];
$maname = "New Name"; //$_REQUEST['email'];
// Attempt to execute the prepared statement
$stmt->execute();
echo "Records inserted successfully.";
Никогда не храните пароли в виде открытого текста или с помощью MD5 / SHA1! Сохраняйте только хэши паролей, созданные с помощью PHP password_hash()
, которые затем можно проверить с помощью password_verify()
. Взгляните на этот пост: Как использовать password_ha sh и узнайте больше о bcrypt и хешировании паролей в PHP