簡體   English   中英

通過php將html表單數據發送到sql數據庫

[英]Send html form data to sql database via php

我正在嘗試將表單上收集的數據插入mysql數據庫。 我能夠建立成功的連接,但未插入數據。 我讀過許多類似的問題,但到目前為止都沒有成功。

sqldatabase.php

<?php
$servername = "localhost";
$username = "USER";
$password = "PASS";
$dbname = "DATABASE";

// Create connection
$conn = mysqli_connect($servername, $username, $password, $dbname);

// Check connection
if (!$conn) {
    die("Connection failed: " . mysqli_connect_error());
}

$first_name = $_POST['first_name'];
$last_name = $_POST['last_name'];
$first_spouse = $_POST['first_spouse'];
$last_spouse = $_POST['last_spouse'];
$address = $_POST['address'];
$city = $_POST['city'];
$state = $_POST['state'];
$zip = $_POST['zip'];
$phonehome = $_POST['phonehome'];
$phonecell = $_POST['phonecell'];
$email = $_POST['email'];
$dob = $_POST['dob'];
$occupation = $_POST['occupation'];
$shirt_size = $_POST['shirt_size'];
$cap_size = $_POST['cap_size'];
$shirtnum1 = $_POST['shirtnum1'];
$shirtnum2 = $_POST['shirtnum2'];
$desc = $_POST['desc'];
$bylaws_rules = $_POST['bylaws_rules'];
$umpires = $_POST['umpires'];
$alcohol = $_POST['alcohol'];
$waiver = $_POST['waiver'];


$sql="INSERT INTO 'softball_reg_2016' (first_name, last_name, first_spouse, last_spouse,
 address, city, state, zip, phonehome, phonecell, email, dob, occupation, shirt_size,
  cap_size, shirtnum1, shirtnum2, desc, bylaws_rules, umpires, alcohol, waiver)
  VALUES ('$_POST[first_name]', '$_POST[last_name]', '$_POST[first_spouse]', '$_POST[last_spouse]',
 '$_POST[address]', '$_POST[city]', '$_POST[city]', '$_POST[state]', '$_POST[zip]',
 '$_POST[phonehome]', '$_POST[phonecell]', '$_POST[email]', '$_POST[dob]', '$_POST[occupation]',
 '$_POST[shirt_size]', '$_POST[cap_size]', '$_POST[shirtnum1]', '$_POST[shirtnum2]',
 '$_POST[desc]', '$_POST[bylaws_rules]', '$_POST[umpires]', '$_POST[alcohol]', '$_POST[waiver]')";

echo "Connected successfully";

mysqli_close($conn);
?> 

我的HTML

<form action="/php/sqldatabase.php" method="POST" id="registration">

       <h2>Registration for 2016 Summer Season (April-September)</h2>  
    <p>
        <label for="name">Name:</label>
        <input type="text" id="first_name" name="first_name" placeholder="First Name" autofocus="" />
        <input type="text" id="last_name" name="last_name" placeholder="Last Name" />
    </p>

    <p>
        <label for="spouse">Name of Spouse<i>(Optional)</i>:</label>
        <input type="text" id="first_spouse" name="first_spouse" placeholder="First Name" />
        <input type="text" id="last_spouse" name="last_spouse" placeholder="Last Name" />
    </p>

    <p>
        <label for="address1">Address:</label>
        <input type="text" id="address" name="address" placeholder="Street Address" />
        <input type="text" id="city" name="city" placeholder="City" />
    </p>

    <p>
        <label for="address2"></label>
        <input type="text" id="state" name="state" placeholder="State" />
        <input type="number" id="zip" name="zip" placeholder="Zip Code" />
    </p>

    <p>
        <label for="phone">Phone:</label>
        <input type="tel" id="phonehome" name="phone" placeholder="Home Phone" />
        <input type="tel" id="phonecell" name="phone" placeholder="Work/Cell Phone" />
    </p>

    <p>
        <label for="phone">Email:</label>
        <input type="email" id="email" name="email" />
    </p>

    <p>
        <label for="dob">Date of Birth:</label>
        <input type="date" id="dob" name="dob" />
    </p>

    <p>
        <label for="occupation">Occupation (Former, if retired):</label>
        <input type="text" id="occupation" name="occupation" />
    </p>

    <div id="shirt">
    <p>
        <label for="size">Uniform:</label>
        <select name="shirt_size" id="shirt_size">
            <option value="">Shirt Size</option>
            <option value="medium">Medium</option>
            <option value="large">Large</option>
            <option value="XL">XL</option>
            <option value="2XL">2XL</option>
            <option value="3XL">3XL</option>
        </select>
        <select name"cap_size" id="cap_size">
            <option value="">Cap Size</option>
            <option value="XS/S">XS/S</option>
            <option value="S/M">S/M</option>
            <option value="M/L">M/L</option>
            <option value="L/XL">L/XL</option>
        </select>
    </p>

    <p>
       <label for="shirtnum">Shirt Number:</label>
       <input type="number" id="shirtnum1" name="shirtnum1" placeholder="1st Choice" min="0" max="99" />
       <input type="number" id="shirtnum2" name="shirtnum2" placeholder="2nd Choice" min="0" max="99" />
    </p>
    </div>
    <div id="describe">

    <p>
      <span class="describe1">
        <b>Describe any information you deem important regarding your ability and/or availability or any other information you deem important to the season.</b>
        <textarea name="description" id="desc" cols="30" rows="10"></textarea>
      </span>
    </p>
    </div>

    <div id="ethics">
        <h2>Code of Ethics</h2>
        <p>
            <span class="ethics1">
            <input type="checkbox" id="bylaws_rules" name="bylaws_rules" /> 
                I agree to abide by the Bylaws and decisions of the Club and Club Officials.
            </span>
        </p>

        <p>
            <span class="ethics1">
            <input type="checkbox" id="umpires" name="umpires" />
                I agree to accept the decisions of the Umpires and Team Managers.
            </span>
        </p>

        <p>
            <span class="ethics1">
            <input type="checkbox" id="alcohol" name="alcohol" />
                I agree to abstain from alcoholic beverages prior to a game.
            </span>
        </p>
        </div>

        <div id="waiver">
            <h2>Release of Liability</h2>

                <p>
                <b>I agree to hold harmless the club.</b>
                </p>
                <input type="checkbox" id="waiver" name="waiver" />
        </div>

        <ol class="requires">

            <li>Dues are $95 and should be received by April 6, 2016</li>
            <li>If you decline to play after being drafted, your registration fee will not be refunded.</li>
            <li>All members must be at least 50 years old by December 31, 2016</li>
            <li>The deadline for receipt of registrations is April 6, 2016. Registrations received after this date will 
                not be processed for the player drat. Assignments to teams will then be made according to League guidelines
                regarding late registering players.</li>
            <li>Registrations received without the correct fee will not be considered as received and will not be valid until the correct fee is received.</li>
        </ol>

        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>&nbsp;</p>
        <p>
            <button type="submit" id="register">Register!</button>
        </p>

    </form>

感謝您的任何幫助!

作為社區Wiki發布。

這里有些錯誤。

  • 首先,您從未執行過查詢。
  • 您永遠不會檢查empty()字段,否則可能會在表上插入空行。

查閱手冊:

面向對象的風格

混合mysqli :: query(字符串$ query [,int $ resultmode = MYSQLI_STORE_RESULT])

程序風格

混合mysqli_query(mysqli $ link,字符串$ query [,int $ resultmode = MYSQLI_STORE_RESULT])

然后,您為表使用了錯誤的標識符限定符:

INSERT INTO 'softball_reg_2016'
            ^                 ^

是常規的單引號,應該是對號或完全不加引號:

INSERT INTO `softball_reg_2016`

僅此一項就將引發語法錯誤。

閱讀標識符限定符:

然后,您將desc用作列名,這是MySQL的保留字。 那也將引發您關於此的錯誤。 因此,您可以將其重命名為其他名稱,或將其包裝起來。

`desc`

參考:

還要檢查錯誤:

另外,您當前的代碼可以進行SQL注入 mysqli_*與預處理語句一起使用 ,或將PDO預處理語句一起使用

另外,由於您已經為POST數組聲明了變量,為什么還要在查詢中放入POST數組? 剛剛使用過的變量。 您實際上在使用更多代碼。

如評論中所述:

“您還有兩個輸入字段,具有相同的名稱: phone 。這是預期的還是僅僅是復制/粘貼的常見問題?– FirstOne”

您需要執行查詢。 您剛剛獲取了字符串。 這就是你所缺少的。

  mysqli_query($conn,$sql);

成功消息之前。

您沒有執行查詢

你必須做

mysqli_query($conn,$query);

在關閉連接之前

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM