2014-10-07 06:06
浏览 58


I am trying to get the data from user registration form in HTML and then push the data to JSON and then get the JSON and store into MySQL. Please help me.


    <form id="myForm" action="userInfo.php" method="post">
        <table align="center">
                <td><label for="FirstNameLabel" class="tableproperties">First Name</label></td>
                <td><input type="text" class="signupTextBoxStyle" name="firstName" placeholder="Enter First Name" id="FirstNameBox" required/></td>
                <td><label for="LastNameLabel" class="tableproperties">Last Name</label></td>
                <td><input type="text" name="lastName" placeholder="Enter Last Name" id="LastNameBox" class="signupTextBoxStyle" required></td>
            <td><label for="eMailLabel" class="tableproperties">Email</label></td>
            <td><input type="email" name="email" placeholder="Enter Email" id="eMailBox" class="signupTextBoxStyle" required></td>
            <td id="emailStatus"></td>

            <td><label for="passwordLabel" class="tableproperties">Password</label></td>
            <td><input type="password" name="password" placeholder="Enter Password" id="passwordTextbox" maxlength="24" class="signupTextBoxStyle" required></td>
            <td><i class="fa fa-info-circle infoIcon" title="Password must contain minimum 3 upper case, 2 lower case and 2 special chars"></i></td>
            <td><progress value="0" max="100" class="progressBar" id="progressStatus"></progress></td>
            <td id="passwordStrength"></td>

            <td><label for="confirmPasswordLabel" class="tableproperties">Confirm Password</label></td>
            <td><input type="password" name="confirmpassword" placeholder="Must be same as password" maxlength="24" id="confirmPasswordBox" class="signupTextBoxStyle" required></td>
            <td id="passwordMismatch"></td>

            <td><label for="dobLabel" class="tableproperties">D.O.B</label></td>
            <td><input type="date" name="dob" placeholder="Enter D.O.B" id="dobBox" class="signupTextBoxStyle" required></td>

            <td><label for="dobTimeLabel" class="tableproperties">D.O.B with time</label></td>
            <td><input type="datetime" name="dobTime" placeholder="Enter D.O.B with time" id="dobTimeBox" class="signupTextBoxStyle" required></td>

            <td><label for="localDOBLabel" class="tableproperties">Local D.O.B</label></td>
            <td><input type="datetime-local" name="localdob" placeholder="Enter Local D.O.B" id="localDobBox" class="signupTextBoxStyle" required></td>

            <td><label for="ssnLabel" class="tableproperties">SSN</label></td>
            <td><input type="text" name="ssn" placeholder="000-00-0000" id="ssnBox" class="signupTextBoxStyle" required pattern="^(\d{3}-\d{2}-\d{4})$"></td>

            <td><label for="usPhoneNumber" class="tableproperties" >US Phone Number</label></td>
            <td><input type="text" name="phone" placeholder="000-000-0000" id="usNumberBox" class="signupTextBoxStyle" required></td>
            <td id="phoneStatus"></td>

            <td><label for="creditLabel" class="tableproperties" id="CreditText">Credit Card Number</label></td>
            <td><input type="text" name="creditCardNumber" placeholder="Enter Credit Card Number" id="creditBox" class="signupTextBoxStyle" required pattern="^[0-9]{12}(?:[0-9]{4})?$"></td>

            <td colspan='2'>
                <input type="submit" class="btn btn-primary btn-lg btn-block signupbuttonStyle" id="sub" />
                <button type="button" class="btn btn-danger btn-lg btn-block signupbuttonStyle" onclick="location.href = 'index.html';">Cancel</button>

PHP(Just to test Data is getting saved to mySQL if i manually enter the data)

$json_obj = '{
      "jsonFirstName": "Kishan",
      "jsonLastName": "Kishan",
      "jsonEmail": "Kishan",
      "jsonPassword": "Kishan",
      "jsonDob": "Kishan",
      "jsonDobTime": "Kishan",
      "jsonLocaldob": "Kishan",
      "jsonSsn": "Kishan",
      "jsonPhonenumber": "Kishan",
      "jsonCreditcardnumber": "Kishan"

PHP(Error if i want to get the values from the form)

$json_obj = '{
      "jsonFirstName": (string) $_POST['firstName'],
      "jsonLastName": (string) $_POST['lastName'],
      "jsonEmail": (string) $_POST['email'],
      "jsonPassword": (string) $_POST['password'],
      "jsonDob": (string) $_POST['dob'],
      "jsonDobTime": (string) $_POST['dobTime'],
      "jsonLocaldob": (string) $_POST['localdob'],
      "jsonSsn": (string) $_POST['ssn'],
      "jsonPhonenumber": (string) $_POST['phone'],
      "jsonCreditcardnumber": (string) $_POST['creditCardNumber']

Error Description
Parse error: syntax error, unexpected 'firstName' (T_STRING) in /Applications/XAMPP/xamppfiles/htdocs/xampp/297test/userInfo.php on line 19

REST of PHP Code
$result = json_decode($json_obj);

$firstname = $result->jsonFirstName;
$lastname = $result->jsonLastName;
$email = $result->jsonEmail;
$password = $result->jsonPassword;
$dob = $result->jsonDob;
$dobTime = $result->jsonDobTime;
$localdob = $result->jsonLocaldob;
$ssn = $result->jsonSsn;
$phonenumber = $result->jsonPhonenumber;
$creditcardnumber = $result->jsonCreditcardnumber;

if(mysql_query("INSERT INTO user VALUES('$firstname', '$lastname', '$email', '$password', '$dob', '$dobTime', '$localdob', '$ssn','$phonenumber','$creditcardnumber')")){
    echo "Successfully Inserted";

    echo "Fail to Insert";
  • 点赞
  • 写回答
  • 关注问题
  • 收藏
  • 邀请回答

4条回答 默认 最新

  • dongtun3259 2014-10-07 10:51

    Creating JSON-Strings directly through concatenation is hard because of quotes, new line characters etc.

    Instead, create an array of values and encode that into a JSON string with json_encode:

    $values = array(
      "jsonFirstName" =>        $_POST['firstName'],
      "jsonLastName" =>         $_POST['lastName'],
      "jsonEmail" =>            $_POST['email'],
      "jsonPassword" =>         $_POST['password'],
      "jsonDob" =>              $_POST['dob'],
      "jsonDobTime" =>          $_POST['dobTime'],
      "jsonLocaldob" =>         $_POST['localdob'],
      "jsonSsn" =>              $_POST['ssn'],
      "jsonPhonenumber" =>      $_POST['phone'],
      "jsonCreditcardnumber" => $_POST['creditCardNumber']
    $json_obj = json_encode($values);

    Alternatively you can just do:

    $json_obj = json_encode($_POST);

    You will then get a JSON object with every index of $_POST. The only difference is, that you can't rename your fields as you did in your example.

    点赞 打赏 评论
  • dongliyan9190 2014-10-07 06:12

    Not sure why you are doing it this way, however the parse error is because you are using a single quote to open the string and then also using that to pick the array index.

    Change $_POST['firstName'] to use double quotes such as $_POST["firstName"]

    点赞 打赏 评论
  • duanchen7703 2014-10-07 06:19

    EDIT: Try to do this.

    $array = (
          "jsonFirstName" =>  $_POST['firstName'],
          "jsonLastName" =>  $_POST['lastName'],
          "jsonEmail" => $_POST['email'],
          "jsonPassword" => $_POST['password'],
          "jsonDob" => $_POST['dob'],
          "jsonDobTime" => $_POST['dobTime'],
          "jsonLocaldob" => $_POST['localdob'],
          "jsonSsn" => $_POST['ssn'],
          "jsonPhonenumber" => $_POST['phone'],
          "jsonCreditcardnumber" => $_POST['creditCardNumber']
    $json = json_encode($array);
    点赞 打赏 评论
  • duanhegn231318 2014-10-07 08:57

    You're getting an error because you are creating the JSON object out of the POST variables in a wrong way. There is indeed an issue with quotes in your statement. It should rather be something like:

      $json_obj = '{
      "jsonFirstName": "'.(string) $_POST['firstName'].'",
      "jsonLastName": "'.(string) $_POST['lastName'].'",
      "jsonEmail": "'.(string) $_POST['email'].'",
      "jsonPassword": "'.(string) $_POST['password'].'",
      "jsonDob": "'.(string) $_POST['dob'].'",
      "jsonDobTime": "'.(string) $_POST['dobTime'].'",
      "jsonLocaldob": "'.(string) $_POST['localdob'].'",
      "jsonSsn": "'.(string) $_POST['ssn'].'",
      "jsonPhonenumber": "'.(string) $_POST['phone'].'",
      "jsonCreditcardnumber": "'.(string) $_POST['creditCardNumber'].'"

    If I just include the variable without the double quotes while constructing the JSON object I get something like:

      $name = "Foo";
      $json_obj = '{"firstName" :'.$name.'}'; 
     //gets expanded to $json_obj = {"firstname" : Foo}
     //Whereas it should be $json_obj = {"firstname" :"Foo"}

    It was because of the missing double quotes, you could not create a JSON object in the first place and therefore when you tried to decode it and further access an attribute, it gave an error suggesting :

     Trying to get property of non-object in /Applications/XAMPP/xamppfiles/htdocs/xampp/297test/userInfo.php on line 35

    Try the code snippet I gave, it should hopefully help you out.

    点赞 打赏 评论

相关推荐 更多相似问题