php - PDO 准备语句创建

标签 php mysql pdo prepared-statement

我在使用 PHP 和 PDO 准备好的语句让我的项目创建新用户时遇到了一些麻烦。我可以检索用户表,非常好,但是,我只是无法获取发送到数据库的表单中的数据。关于我做错了什么的任何建议或提示都会很棒,谢谢。这是我的脚本:

<?php
if($_POST){
require_once('connect.php');

try {

    $stmt = $con->prepare("INSERT INTO admin SET username=:username, fName=:fName, lName=:lName, email=:email, userLevel=:userLevel");

    $username = htmlspecialchars(strip_tags($_POST['username']));
    $fName = htmlspecialchars(strip_tags($_POST['fName']));
    $lName = htmlspecialchars(strip_tags($_POST['lName']));
    $email = htmlspecialchars(strip_tags($_POST['email']));
    $userLevel = htmlspecialchars(strip_tags($_POST['userLevel']));

    $stmt->bindParam(':username', $username);
    $stmt->bindParam(':fName', $fName);
    $stmt->bindParam(':lName', $lName);
    $stmt->bindParam(':email', $email);
    $stmt->bindParam(':userLevel', $userLevel);

    if($stmt->execute())
    {
        echo "<h1>Success</h1>";
    }
    else
    {
        echo "<h1>Fail</h1>";
    }
}

catch(PDOException $exception)
{
    die('Error: ' . $exception->getMessage());
}
}
?> 

<form action="<?php echo htmlspecialchars($_SERVER["PHP_SELF"]);?>"method="post">
  <table id="createUser">
      <tr>
          <td>
              Username
          </td>
          <td>
              <input type="text" name="username">
          </td>
      </tr>
      <tr>
          <td>
             First Name
          </td>
          <td>
              <input type="text" name="fName">
          </td>
      </tr>
      <tr>
          <td>
              Last Name
          </td>
          <td>
              <input type="text" name="lName">
          </td>
      </tr>
      <tr>
          <td>
              email
          </td>
          <td>
              <input type="email" name="email">
          </td>
      </tr>
      <tr>
          <td>
              Access Level
          </td>
          <td>
              <select name="userLevel">
                  <option selected disabled hidden>Please Select</option>
                  <option value="0">Full Control</option>
                  <option value="1">Managed Control</option>
                  <option value="2">Own Page Control</option>
              </select>
          </td>
      </tr>
      <td>
          <input type="submit" value="Add User"/>
          <a href="admin.php">Test Link</a>
      </td>
  </table>
</form>



</body>
</html>

最佳答案

我想我会更新这个,因为我终于设法让它工作了。事实证明我的代码是正确的,并且由于 10.1 的更新,由于某些奇怪的原因,PHP Storm 不接受 £_POST。有一张票已打开,许多其他人也遇到过这个问题。

我实际上使用的是 PHP Storm 的内置服务器,而不是 Apache,这就是它不起作用的原因。我刚刚下载了 Brackets,将文件运行到本地主机,嘿,很快,创建终于成功了。

所以,我知道我的 SQL 和 PDO 不应该受到责备,一旦我将 Apache 配置为与 PHP Storm 一起使用,一切都会好起来的。感谢您的所有建议和帮助。

关于php - PDO 准备语句创建,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42028826/

相关文章:

php - 将数组插入 mysql (userCake)

php - mysql命名约定

javascript - 如何使用 Angular JavaScript 从(php 编码的 json)获取值?

php - 这是将图像保存到 mysql 数据库的可接受方法吗?

mysql - 仅选择具有链接记录的记录

php - Mysqli 查询没有返回任何结果

php - PDO MysQL "Update"语句未保存到数据库

php - 如何在 PHP 外部文件中调用过滤器钩子(Hook)

php - 我应该始终设置 "action"属性吗?

php - 搜索按钮未在表格中显示特定数据