2017-02-03 3 views
0

У меня возникли проблемы с созданием моего проекта для создания нового пользователя с использованием PHP & подготовленных отчетов PDO. Я могу получить таблицу пользователей, отлично, однако я просто не могу получить данные, которые находятся в форме, отправленной в базу данных. Любые советы или советы относительно того, что я делаю неправильно, были бы замечательными, спасибо, заранее. Вот мой сценарий:PDO подготовленный оператор create

<?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> 
+2

Что происходит, когда вы выполняете этот код? Вы не должны хранить данные с помощью 'htmlspecialchars', используйте это при выводе. – chris85

+0

Я думаю, что 'SET' работает с запросом' UPDATE'. – frz3993

+1

Я не уверен, поддерживает ли PDO этот синтаксис SQL. Это не синтаксис SQL INSERT, а для UPDATE – Andy

ответ

0

Я думал, что обновляю это, так как мне, наконец, удалось заставить его работать. Оказывается, мой код был верным, и PHP Storm не принимал £ _POST, по какой-то причудливой причине, из-за обновления 10.1. Там открыт билет, и многие другие столкнулись с этой проблемой.

Я фактически использовал встроенный сервер PHP Storm, в отличие от Apache, поэтому он не сработает. Я просто скачал скобки, запустил файл на localhost и, эй, престо, создаю, наконец, сработал.

Итак, я знаю, что мой SQL и PDO не виноваты, и как только я настрою Apache для работы с PHP Storm, все будет в порядке. Спасибо за все ваши советы и помощь.

Смежные вопросы