簡體   English   中英

如何使用php從選擇框中插入數據

[英]how to insert data from a select box using php

將html select中的值插入mysql數據庫時遇到了一個問題。 由於某種原因,我似乎無法插入值。 我一直在尋求幫助,但是他們總是給我錯誤。 另外,能不能告訴我mysql和mysqli有什么區別?

PHP代碼

<?php
$con = mysql_connect("localhost","barsne","bit me");
if (!$con) {
    die('Could not connect: ' . mysql_error());
}

mysql_select_db("testing", $con);

$sql="INSERT INTO client_details (id, f_name, l_name, phone, email, job_est) VALUES
   ('', '$_POST[f_name]', '$_POST[l_name]', '$_POST[phone]', '$_POST[email]', '$_POST[job_est]')";

if (!mysql_query($sql,$con)) {
    die('Error: ' . mysql_error());
}

echo "Thank you for booking a with us we will contact you in the next 24 hours to confirm your booking with a time and date";

mysql_close($con)
?>

HTML代碼

<form method="post" action="processing_booking.php">
    <h4><u>Basic Contact Details</u></h4>
    <label>First Name</label>
    <input type="text" name="f_name">
    <label>Last Name:</label>
    <input type="text" name="l_name" id="l_name">
    <label>Phone Number:</label>
    <input type="text" name="phone" id="phone">
    <label>Email:</label>
    <input type="text" name="email" id="email">

    <h4><u>Job Details</u></h4>
    <label>You Would Like To Book A:</label>
    <select name="job_est">
        <option value="select">--SELECT--</options>
        <option value="job">Job</option>
        <option value="est">Estimation</option>
    </select>

    <label>Service Your Booking:</label>
    <select name="job_type">
        <option value="select">--SELECT--</option>
        <option value="gardening">Gardening</option>
        <option value="landscaping">Landscaping</option>
        <option value="painting">Painting & Decorating</option>
        <option value="decking">Decking & Fencing</option>
    </select>

    <label>Any Additional Information </label>
    <textarea name="extra_info"></textarea>
    <input type="submit" value="lets get your dreams started">
</form>

對不起,哭泣不是我的強項

請注意,您錯過了single quotations $_POST['name']

你必須防止注射

// String Type Fields 
$name = strip_tags($_POST['name']);
$f_name= strip_tags($_POST['f_name']);
$l_name= strip_tags($_POST['l_name']);
$phone= strip_tags($_POST['phone']);
$email= strip_tags($_POST['email']);

// Int Type Fields
if (isset($_POST['job_est']) && is_numeric($_POST['job_est']))
   $job_est= $_POST['job_est'];
else 
   $job_est= 0;

然后在查詢中使用

另一點是,如果您的id字段是主字段並且是自動遞增字段,則可以按以下方式定義查詢:

$sql="INSERT INTO client_details (f_name, l_name, phone, email, job_est) VALUES
   ( '".$f_name."', '".$l_name."', '".$phone."', '".$email."', ".$job_est.")";

對於字符串,必須使用'".$variable."'對於整數或數字,必須使用".$variable."

另一點是,您必須將select元素更改為以下內容,因為您在注釋中注意到您的job_est字段類型為int(11)

<select name="job_est">
    <option value="0">--SELECT--</option>
    <option value="1">Gardening</option>
    <option value="2">Landscaping</option>
    <option value="3">Painting & Decorating</option>
    <option value="4">Decking & Fencing</option>
</select>
  • 不推薦使用mysql函數。 請改用mysqli或pdo類。

    mysqli: https : //php.net/manual/zh/class.mysqli.php

    pdo: https//php.net/manual/zh/book.pdo.php

  • 創建一個var_dump($_POST) ,您將看到問題所在。 順便說一句,您錯過了單引號$_POST['value']

  • 絕對不要在SQL查詢中直接寫入$ _POST或$ _GET數據。 務必始終對其進行驗證,因為即使使用tampadata或chrome開發人員工具也可以輕松更改selectbox的值。

好了,您顯然可以使用以下命令開始打印$ _POST數組的結果:

print_r($_POST,1);

檢查其中是否存在所有變量

暫無
暫無

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

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