-2

PHP が ajax スクリプトから取得した値を MySQL データベースに書き込まないという問題があります。ブラウザにエコーされているため、phpスクリプトが値を取得していることがわかります。しかし、データベースを確認すると、5 つの値のうち 2 つしか入力されていません。これはニュアンスではないと確信していますが、これを解読できないようです。

==============編集=============

書き込まれていない値は、名、姓、および職業です。(それぞれ $fname、$lname、および $job)

==============編集=============

PHP

<?php

//db connecting variables
  $hostname = "foobase";
  $username = "foobase";
  $dbname = "contactformbase";
  $password = "password";
  $con = new mysqli($hostname, $username, $password, $dbname);
  $tbl_name = "client_base";

//Connecting to your database
  if ($con->connect_error) {
        die('Connect error (' . mysqli_connect_errno() . ')' . mysqli_connect_errno());
    }
    echo 'success!...' . $con->host_info . "\n";
  print_r($_POST);
  $fname = $_POST['fname'];
  $lname = $_POST['lname'];
  $email = $_POST['email'];
  $address = $_POST['address'];
  $job = $_POST['job'];
  $message = $_POST['message'];

//adding values into the database.
  $sql="INSERT INTO $tbl_name (First Name, Last Name, Email, Address, Job)VALUES('POST_['first_name']', '$lname', '$address', '$email')";
  $result = mysqli_query($con, $sql); 
    if($result){
      echo "success";
      }
    else {
      echo "error";
      }

Javascript

<script type="text/javascript">
    $("#submit").click(function(e) {
        e.preventDefault();
var data_string = $("form#contact").serializeArray();
alert(data_string);
$.ajax({
    type: "POST",
    url: "database.php",
    data: data_string,
    success: function(){
        alert(data_string);
    }
});
return false;
</script>

HTML

<form action="" method="POST" id="contact">
    <table>
        <tbody>
            <tr>
                <td><h2>First Name: </h2></td>
                <td><h2>Last Name: </td>
                <td><h2>Email Address: </td>
            </tr>
            <tr>
                <td><input type="text" name="first_name" placeholder="Johnny"></td>
                <td><input type="text" name="last_name" placeholder="Appleseed"></td>
                <td><input type="text" name="email" placeholder="johnny@email.com"></td>
            </tr>
            <tr>
                <td><h2>Street Address:</h2></td>
                <td><h2>What's Dirty?</h2></td>
            </tr>
            <tr>
                <td><input type="text" name="address" placeholder="123 Applegrove Rd. Appletown, VA 12345"></td>
                <td>
                    <select name="job" form="contact">
                        <option value="house">House</option>
                        <option value="roof">Roof</option>
                        <option value="garage-shed">Garage/shed</option>
                        <option value="other">Other</option>
                    </select>
                </td>
            </tr>
            <tr>
                <td><h2>Message: </h2></td>
            </tr>
        </tbody>
    </table>
   <textarea name="message">
</form>
4

3 に答える 3

0

奇妙な変数を使用していますPOST_['first_name']

このクエリを試してください:

(注:' 'フィールド名にスペースがあるため、フィールドに引用符 ( ) を使用するか、PDO を使用してクエリを準備および実行する必要があります。)

$sql="INSERT INTO $tbl_name (First Name, Last Name, Email, Address, Job)
      VALUES('$fname', '$lname', '$address', '$email')";

他の問題はPOST配列です。first_name代わりにfname、のlast_name代わりに送信しますlname

<tr>
    <td><input type="text" name="first_name" placeholder="Johnny"></td>
    <td><input type="text" name="last_name" placeholder="Appleseed"></td>
    <td><input type="text" name="email" placeholder="johnny@email.com"></td>
</tr>

これは以下を返します:

$_POST = array(
   "first_name" => "Johnny",
   "last_name" => "Appleseed",
   "email" => "johnny@email.com"
);

ご覧のとおり、持っていない$_POST['fname']ため$_POST['lname'] 、変更する必要があります。

$fname = $_POST['first_name'];
$lname = $_POST['last_name'];

jobについては、INSERTステートメントに追加しませんでした:

$sql="INSERT INTO $tbl_name (First Name, Last Name, Email, Address, Job)
      VALUES('$fname', '$lname', '$address', '$email', '$job')";
于 2013-06-07T01:18:59.550 に答える