PHP сервер и MySQL форма

0

Я не могу заставить это работать. Я попал в дорожный блок. Пожалуйста, посмотрите на него и сообщите мне, видите ли вы что-то, что мне не хватает. Подключение к mysql проверено на работу. Когда я отправляю форму, она дает мне "Запись вставлена успешно". Но фактическая запись не была создана в базе данных. Я пробовал разные подходы безуспешно

<?php    
if ($_SERVER["REQUEST_METHOD"] == "POST"){

$usrID = $_POST["usrID"];
$Fname = $_POST["Fname"];
$Lname = $_POST["Lname"];
$short_title = $_POST["short_title"];
$email = $_POST["email"];
$phone = $_POST["phone"];

$link = mysqli_connect("localhost", "username", "topsecret", "DBname");

if($link === false){
    die("ERROR: Could not connect. " . mysqli_connect_error());
}

$sql = "INSERT INTO tableName (usrID, Fname, Lname, short_title, email, phone) VALUES (?, ?, ?, ?, ?, ?)";

if($stmt = mysqli_prepare($link, $sql)){
    mysqli_stmt_bind_param($stmt, "sss", $usrID, $Fname, $Lname, $short_title, $email, $phone);

    mysqli_stmt_execute($stmt);

    echo "Record inserted successfully.";
} else{
    echo "ERROR: Could not prepare query: $sql. " . mysqli_error($link);
}
mysqli_stmt_close($stmt);
mysqli_close($link);
}
?>

<!doctype html>
<html>
<head>
<meta charset="utf-8">
<title>Need Help!</title>
</head>

<body>

    <form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>" method="post">
  <table align="center" width="650" border="1" cellspacing="0" cellpadding="3">
    <tbody>
        <tr>
        <td colspan="4" align="center">
          <span>Input New User Information: </span></td>
        </tr>
      <tr>
        <td colspan="4" align="center">
          <label for="usrID">User ID:</label>
          <input type="text" name="usrID" id="usrID" required></td>
        </tr>
      <tr>
          <td colspan="2"><label for="Fname">First Name: </label><input type="text" name="Fname" id="Fname" required></td>
        <td colspan="2"><label for="Lname">Last Name: </label><input type="text" name="Lname" id="Lname" required></td>
        </tr>
      <tr>
          <td colspan="2"><label for="short_title">Abreviated Title(s): </label><input type="text" name="short_title" id="short_title" placeholder="Generally goes after Last Name and a comma"></td>
        <td colspan="2"><label for="email">Agent Email: </label><input type="email" name="email" id="email"></td>        
      </tr>
      <tr>
          <td colspan="4"><label for="phone">Agent Phone: </label><input type="tel" name="phone" id="phone" placeholder="XXX.XXX.XXXX"></td>
      </tr>
      <tr>
        <td colspan="2"><input type="reset"></td>
        <td colspan="2"><input type="submit" name="submit" value="Submit"></td>
      </tr>
    </tbody>
  </table>
</form>
</body>
</html>
  • 1
    Количество переменных и длина строковых типов должны соответствовать параметрам в операторе в вашем параметре связывания.
Теги:
forms

1 ответ

0

Кажется, что это утверждение возвращает true:

if($stmt = mysqli_prepare($link, $sql)){

Независимо от того, что выполнил оператор, возвращается, если указанная строка верна, она печатает ваши строки:

mysqli_stmt_execute($stmt);

echo "Record inserted successfully.";

Что такое утверждение в $ stmt? Проверьте, что sql и убедитесь, что это правильно.

Ещё вопросы

Сообщество Overcoder
Наверх
Меню