簡體   English   中英

使用PHP和MYSQL的PDO插入操作不起作用

[英]PDO Insert operation using PHP and MYSQL not working

這是我第一次使用pdo,並且似乎在使用insert語句寫入數據庫時​​遇到問題。 我有一個html表單來“創建”一個將數據推送到我的php頁面的帳戶。 我得到的響應是正在使用回顯來吐出數據,但是數據庫中沒有任何變化。 感謝您的時間和幫助。 我確信這是一個簡單的解決方案或一個愚蠢的錯誤。

下方的customer.html

<html>
<head>
<link href="css/formlayout.css" rel="stylesheet" type="text/css"/>
<title></title>
<script type="text/javascript">
function validate()
{
    var Email = document.getElementById("txtEmail");
    var Phone = document.getElementById("txtPhone");
    var Password1 = document.getElementById("txtPassword");
    var Password2 = document.getElementById("txtPwdVerify");
    var State = document.getElementById("lstState");

    if (State.selectedIndex == "0")
    {
        alert("Please Select a State!");

    }

    var Zip = document.getElementById("txtZip");
    if(Email.value.indexOf("@") == -1)
    {
        alert("Please enter a valid email address");
        Email.select();
        return false;

    }

    var PhoneEdit = /^\d\d\d-\d\d\d-\d\d\d\d$/;
    if(!PhoneEdit.test(Phone.value))
    {
        alert("Please enter a phone number in the form of ###-###-####");
        Phone.select();
        Phone.focus();
        return false;
    }

    if(Password1.value != Password2.value )
    {
        alert("Passwords do not match!");
        Password1.select();
        Password1.focus();
        return false;
    }

    if(isNaN(Zip.value))
    {
        alert("Please enter a valid zip code");
        Zip.select();
        Zip.focus();
        return false;
    }
    return true;
}
</script>
</head> 
<body>
    <div id="Container">

<h1>Customer Account</h1>
    <div id="Logo">

    </div>
    <div id="OrderForm">
    <form name="PDS" id="PDS" action="http://iurl/folder/insert/response.php" method="get">
        <div id="FormFields">
    <fieldset>
    <legend>Customer</legend>   
        <label for="txtFirstName">First Name: </label>
        <input type="text" name="txtFirstName" id="txtFirstName" required autofocus/>
        <label for="txtLastName">Last Name: </label>
        <input type="text" name="txtLastName" id="txtLastName" required />
        <label for="txtEmail">Email: </label>
        <input type="email" name="txtEmail" id="txtEmail" required />
        <label for="txtPhone">Phone: </label>
        <input type="text" name="txtPhone" id="txtPhone" placeholder="(###)###-####" 
        required pattern="[0-9]{3}-[0-9]{3}-[0-9]{4}"/>


    </fieldset>

        <fieldset>
    <legend>Address</legend>    
        <label for="txtAddress">Address: </label>
        <input type="text" name="txtAddress" id="txtAddress" Required/>
        <label for="txtCity">City: </label>
        <input type="text" name="txtCity" id="txtCity" Required/>
        <label for="lstState">State: </label>
        <select id="lstState" name="lstState">
<option value="none" selected>Please select a state</option>
<option value="AK">AK</option>
 <option value="AL">AL</option>
 <option value="AR">AR</option>
 <option value="AZ">AZ</option>
 <option value="CA">CA</option>
 <option value="CO">CO</option>
 <option value="CT">CT</option>
 <option value="DC">DC</option>
 <option value="DE">DE</option>
 <option value="FL">FL</option>
 <option value="GA">GA</option>
 <option value="HI">HI</option>
 <option value="IA">IA</option>
 <option value="ID">ID</option>
 <option value="IL">IL</option>
 <option value="IN">IN</option>
 <option value="KS">KS</option>
 <option value="KY">KY</option>
 <option value="LA">LA</option>
 <option value="MA">MA</option>
 <option value="MD">MD</option>
 <option value="ME">ME</option>
 <option value="MI">MI</option>
 <option value="MN">MN</option>
 <option value="MO">MO</option>
 <option value="MS">MS</option>
 <option value="MT">MT</option>
 <option value="NC">NC</option>
 <option value="ND">ND</option>
 <option value="NE">NE</option>
 <option value="NH">NH</option>
 <option value="NJ">NJ</option>
 <option value="NM">NM</option>
 <option value="NV">NV</option>
 <option value="NY">NY</option>          
 <option value="OH">OH</option>
 <option value="OK">OK</option>
 <option value="OR">OR</option>
 <option value="PA">PA</option>
 <option value="RI">RI</option>
 <option value="SC">SC</option>
 <option value="SD">SD</option>
 <option value="TN">TN</option>
 <option value="TX">TX</option>
 <option value="UT">UT</option>
 <option value="VT">VT</option>
 <option value="VA">VA</option>
 <option value="WA">WA</option>
 <option value="WV">WV</option>
 <option value="WI">WI</option>
 <option value="WY">WY</option>
        </select>
        <label for="txtZip">Zip Code: </label>
        <input type="text" name="txtZip" id="txtZip" maxlength="5" required/>

    </fieldset>

    <fieldset>
    <legend>Password</legend>   
        <label for="txtPassword">Password: </label>
        <input type="password" name="txtPassword" id="txtPassword" Required/>
        <label for="txtPwdVerify">Verify Password: </label>
        <input type="password" name="txtPwdVerify" id="txtPwdVerify"/>

    </fieldset>


    </div>
    <div id="FormButtons"></div>
    <input type="submit" id="btnSubmit" value="Submit" onclick="validate()">
    <input type="reset" id="btnReset"/>
    </form>
    </div>
    </div>
</body>
</div>

這是我的response.php

<html>  
<head>
<body>
<h1>Thank You!</h1>


<?php

$fname = $_GET['txtFirstName'];
$lname = $_GET['txtLastName'];
$email = $_GET['txtEmail'];
$phone = $_GET['txtPhone'];
$address = $_GET['txtAddress'];
$city = $_GET['txtCity'];
$state = $_GET['lstState'];
$zip = $_GET['txtZip'];

    $dsn = 'mysql:host=hostname;dbname=dbname';
    $username = 'username';
    $password = 'password';

    $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);

        try{
    $db = new PDO($dsn,$username,$password);
    $Insert = "Insert into customerinfo(FirstName, LastName, Address, City, State, Zip, Phone, EMail, Password) 
    Value (:FirstName, :LastName, :Address, :City, :State, :Zip, :Phone, :EMail)";
    $SQL = $db->prepare($Insert);
    $SQL->bindValue(':FirstName',$fname);
    $SQL->bindValue(':LastName',$lname);
    $SQL->bindValue(':Address',$address);
    $SQL->bindValue(':City',$city);
    $SQL->bindValue(':State',$state);
    $SQL->bindValue(':Zip',$zip);
    $SQL->bindValue(':Phone',$phone);
    $SQL->bindValue(':EMail',$email);
    $SQL->execute();

        $SQL->closeCursor();


 }
 catch(PDOEXCEPTION $e){
    $error_message = $e->getMessage();
    echo("<p>Database error: $error_message</p>");
    exit();
 }




?>

<?php

echo("<h2>First Name: $fname </h2>");
echo("<h2>Last Name: $lname </h2>");
echo("<h2>Address: $address </h2>");
echo("<h2>City: $city </h2>");
echo("<h2>State: $state </h2>");
echo("<h2>Zip Code: $zip </h2>");
echo("<h2>Phone Number: $phone </h2>");
echo("<h2>E-Mail: $email </h2>");

$db = null;



?>

您的代碼定義了9列,但只寫入了8個值。 嘗試一下,還請注意,您不應以純文本形式存儲密碼。

<html>  
<head>
<body>
<h1>Thank You!</h1>


<?php

$fname = $_GET['txtFirstName'];
$lname = $_GET['txtLastName'];
$email = $_GET['txtEmail'];
$phone = $_GET['txtPhone'];
$address = $_GET['txtAddress'];
$city = $_GET['txtCity'];
$state = $_GET['lstState'];
$zip = $_GET['txtZip'];
$user_password = $_GET['txtPassword'];
    $dsn = 'mysql:host=hostname;dbname=dbname';
    $username = 'username';
    $password = 'password';

    $options = array(PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION);

        try{
    $db = new PDO($dsn,$username,$password);
    $Insert = "Insert into customerinfo(FirstName, LastName, Address, City, State, Zip, Phone, EMail, Password) 
    Value (:FirstName, :LastName, :Address, :City, :State, :Zip, :Phone, :EMail, :Password)";
    $SQL = $db->prepare($Insert);
    $SQL->bindValue(':FirstName',$fname);
    $SQL->bindValue(':LastName',$lname);
    $SQL->bindValue(':Address',$address);
    $SQL->bindValue(':City',$city);
    $SQL->bindValue(':State',$state);
    $SQL->bindValue(':Zip',$zip);
    $SQL->bindValue(':Phone',$phone);
    $SQL->bindValue(':EMail',$email);
    $SQL->bindValue(':Password', $user_password);
    $SQL->execute();
    $SQL->closeCursor();


 }
 catch(PDOEXCEPTION $e){
    $error_message = $e->getMessage();
    echo("<p>Database error: $error_message</p>");
    exit();
 }




?>

<?php

echo("<h2>First Name: $fname </h2>");
echo("<h2>Last Name: $lname </h2>");
echo("<h2>Address: $address </h2>");
echo("<h2>City: $city </h2>");
echo("<h2>State: $state </h2>");
echo("<h2>Zip Code: $zip </h2>");
echo("<h2>Phone Number: $phone </h2>");
echo("<h2>E-Mail: $email </h2>");

$db = null;



?>

您可能還應該通過POST而不是GET傳輸此表單。

此外,這並不檢查已驗證的密碼是否與初始密碼匹配。

暫無
暫無

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

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