2014-09-23 3 views
0

У меня возникли проблемы с заполнением данных из моей формы в базу данных MySQL. Форма, из которой поступают данные: demographic.php и сообщение client.php. Я не ошибаюсь в журнале ошибок Apache или в Firefox, но когда я смотрю в базе данных, ничего нет. Что я делаю не так?Данные, не вставляемые в базу данных MySQL

Это client.php файл с названием.

<?php 

    require_once("../auth/config.class.php"); 
    require_once("../auth/auth.class.php"); 

    $config = new Config; 

    $dbh = new PDO("mysql:host=" . $config->dbhost . ";dbname=" . $config->dbname, $config->dbuser, $config->dbpass); 
    $auth = new Auth($dbh, $config); 

    $fname = $_POST["fname"]; 
    $lname = $_POST["lname"]; 
    $age = $_POST["age"]; 
    $address = $_POST["address"]; 
    $city = $_POST["city"]; 
    $state = $_POST["state"]; 
    $zip = $_POST["zip"]; 
    $relationship = $_POST["relationship"]; 
    $living = $_POST["living"]; 
    $dmn = $_POST["dmn"]; 
    $dmtel = $_POST["dmtel"]; 



    //Get UID from session class 
    $uid = $auth->SessionUID($_COOKIE['authID']);  
    echo $uid; 

    try{ 

     $dbh->beginTransaction(); 

     $query = $dbh->prepare("INSERT INTO client VALUES (NULL, $uid, $fname, $lname, $age, $living)"); 
     $query->execute(); 
     $cID = $dbh->lastInsertId(); 

     $query = $dbh->prepare("INSERT INTO relationship VALUES (NULL, $uid, $cID, $relationship, $dmn, $dmtel) "); 
     $query->execute(); 
     $rID = $dbh->lastInsertId(); 

     $query = $dbh->prepare("INSERT INTO address VALUES (NULL, $cID, $address, $city, $state, $zip)"); 
     $query->execute(); 
     $aID = $dbh->lastInsertId(); 

     $dbh->commit(); 
    } 

    catch(PDOException $e){ 
     $dbh->rollback(); 
     print "Error!: " . $e->getMessage(). "</br>"; 
    } 
    catch(PDOException $e){ 
     print "Error!: " . $e->getMessage(). "</br>"; 
    } 




    ?> 

Вот форма с данными demographic.php:

<body> 
    <script> 

     $(document).ready(function() 
      { 
       $("#submit").click(function() 
        { 

         var formData = $("#client").serializeArray(); 

         $.ajax(
          { 
           type: "POST", 
           url: "../pages/client.php", 
           cache: false, 
           data: formData, 
           dataType: 'json', 
           success: function(login) 
           { 

            $('#message').html('<p> code: ' + login.code + '</p>'); 
            $('#message').append('<p> message: ' + login.message + '</p>'); 


           } 

          }); 

         return false; 
        }); 
      }); 




    </script> 


    <div data-role="header"> 
     <h1>IntelyCare</h1> 
     <a href="../views/careplan.php" data-iconshadow="false" data-icon="carat-1" data-iconpos="" data-rel="" data-ajax="false" class="login">Care Plan</a> 
     <a href="../pages/logout.php" data-iconshadow="false" data-icon="carat-1" data-iconpos="" data-rel="" data-ajax="false" class="login">Log Out</a> 
    </div> 

    <div data-role="main" data-theme="a" class="ui-content"> 
     <div data-role="content" > 
      <h3> Welcome <strong><?php echo $auth->getSessionUID($_COOKIE[$config->cookiename]); ?></strong></h3> 
      <br /> 
      <h2> Registration</h2> 

      <form action="" method="POST" id="client"> 
       <p>Enter information for person receiving care (Clients)</p> 

       <label for="fname">First Name:</label> 
       <input type="text" name="fname" placeholder="First Name"/> 
       <br> 
       <label for="lname">Last Name:</label> 
       <input type="text" name="lname" placeholder="Last Name"/> 
       <br> 
       <label for="age">Age:</label> 
       <input type="number" name="age" placeholder="Age"/> 
       <br> 
       <label for="address">Address:</label> 
       <input type="text" name="address" placeholder="Address"/> 
       <br /> 
       <label for="city">City:</label> 
       <input type="text" name="city" placeholder="City"/> 
       <br /> 
       <label for="state">State:</label> 
       <input type="text" name="state" placeholder="State"/> 
       <br /> 
       <label for="zip">Zip Code:</label> 
       <input type="number" name="zip" placeholder="00000"/> 
       <br/


       <label for="relationship" >What's the Relationship to Client</label> 
       <select name="relationship" id="relationship" data-native-menu="false" > 
        <option value="Select One" data-placeholder="true">Select..</option>  
        <option value="Son">Son</option> 
        <option value="Spouse">Spouse</option> 
        <option value="Self">Self</option> 
        <option value="Daughter">Daughter</option> 
        <option value="Grand Kids">Grand Kids</option> 
        <option value="Other">Other</option> 
       </select> 

       <br /> 

       <label for="living" >What type of living situation</label> 
       <select name="living" id="living" data-native-menu="false"> 
        <option value="Select One" data-placeholder="true">Select</option> 
        <option value="Home">Home</option> 
        <option value="W_Caregiver">Home w/Caregiver</option> 
        <option value="inlaw">In-Law</option> 
        <option value="Other">Other</option> 
       </select> 
       <br /> 

       <fieldset data-role="controlgroup" data-type="horizontal" > 
        <legend>Are you the Primary Decision maker?</legend> 
        <input name="dmy" id="radio-choice-h-5a" value="On" type="radio"/> 
        <label for="radio-choice-h-5a">Yes</label> 
        <input name="dmn" id="radio-choice-h-5b" value="Off" type="radio"/> 
        <label for="radio-choice-h-5b">No</label> 

       </fieldset>   

       <br /> 

       <label for="dmtel">Your Phone Number:</label> 
       <input type="tel" name="dmtel" placeholder="000-000-0000"/> 
       <br /> 

       <button type="submit" id="submit">Submit</button> 
      </form> 

     </div> 
    </div> 

</body> 

ответ

3

Вы не получаете ошибки, потому что вы не проверять их. Ваши SQL-запросы не работают, потому что у вас нет кавычек вокруг ваших строковых значений.

$query = $dbh->prepare("INSERT INTO client VALUES (NULL, $uid, '$fname', '$lname', $age, $living, NULL, NULL, NULL)"); 

$query = $dbh->prepare("INSERT INTO relationship VALUES (NULL, $uid, $cID, '$relationship', '$dmn', '$dmtel') "); 

$query = $dbh->prepare("INSERT INTO address VALUES (NULL, $cID, '$address', '$city', '$state', $zip, NULL, NULL)"); 

FYI, Вы широко открыты для SQL injections. И вы не должны быть, потому что вы уже используете PDO. Вам необходимо сделать еще один шаг и использовать prepared statements

.

+0

Это сработало, спасибо за понимание в отношении подготовленного заявления. Как это должно выглядеть? '$ query \t = $ dbh-> prepare (" INSERT INTO client VALUES (?,?,?,?,?,?) ");' '$ query-> execute (array (NULL, '$ uid' '$ fname', '$ lname', '$ age', '$ living')); '$ cID = $ dbh-> lastInsertId();' – Keez

+0

Это один из способов сделать это. :) –

+0

Спасибо за помощь. Какой оператор возврата можно сделать для проверки ошибок в будущем? – Keez

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