簡體   English   中英

PDO沒有更新MYSQL

[英]PDO not updating MYSQL

敲打我的頭,請幫忙。 我想更新表格中14個字段中的7個。 沒有任何錯誤,但也沒有發送數據到表。 我是PDO的新手,過去兩天一直在研究這個問題。 我想要更新的字段使用帶有POST的bindparm,其他字段值不會更改。 感謝您的任何幫助。

<html>
<form role="form" method="POST" action="update.php">
<div>
<label class="control-label">Contractor ID</label>
<input type="text" name="contractor_id"  />
</div>
<div>
<label class="control-label">Firstname</label>
<input type="text" name="firstname"  />
</div>
<div>
<label class="control-label">Lastname</label>
<input type="text" value="Lastname" name="lastname"  />
</div>
<div>
<label class="control-label">Address</label>
<input type="text" value="Address" name="address"  />
</div>
<div>
<label class="control-label">City</label>
<input type="text" value="City" name="city" />
</div>
<div>
<label class="control-label">State</label>
<input type="text" value="State" name="state" />
</div>
<div>
<label class="control-label">Zipcode</label>
<input type="text" value="Zipcode" name="zip" />
</div>
<div>
<label class="control-label">Email</label>
<input type="text" value="Email" name="email"  />
</div>
<div class="margiv-top-10">
<input type="submit" name="submit" class="email" value="Update" >
</div>
</form>
</html>

PHP

try {
$pdo = new PDO($dsn, $user, $password);
$pdo ->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
echo 'Connected to database';
echo '<br>';

$sql = "UPDATE contractor_keys SET  
    contractor_id = :contractor_id,
    firstname = :firstname,
    lastname = :lastname,
    address = :address,
    city = :city,
    state = :state, 
    zip = :zip,
    email = :email,
    areacode = :areacode,
    phonenumber = :phonenumber,
    ssnumber = :ssnumber,
    rate = :rate,
    mykey = :mykey,
    passwd = :passwd

WHERE contractor_id = :contractor_id";

$stmt = $pdo->prepare($sql);  

$stmt->bindParam(':contractor_id', $contractor_id, PDO::PARAM_STR);                               
$stmt->bindParam(':firstname', $_POST['firstname'], PDO::PARAM_STR);       
$stmt->bindParam(':lastname', $_POST['lastname'], PDO::PARAM_STR);    
$stmt->bindParam(':address', $_POST['address'], PDO::PARAM_STR);
$stmt->bindParam(':city', $_POST['city'], PDO::PARAM_STR); 
$stmt->bindParam(':state', $_POST['state'], PDO::PARAM_STR);   
$stmt->bindParam(':zip', $_POST['zip'], PDO::PARAM_STR);  
$stmt->bindParam(':email', $_POST['email'], PDO::PARAM_STR); 
$stmt->bindParam(':areacode', $arecode, PDO::PARAM_INT); 
$stmt->bindParam(':phonenumber', $phonenumber, PDO::PARAM_STR); 
$stmt->bindParam(':ssnumber', $ssnumber, PDO::PARAM_STR); 
$stmt->bindParam(':rate', $rate, PDO::PARAM_INT); 
$stmt->bindParam(':mykey', $mykey, PDO::PARAM_STR); 
$stmt->bindParam(':passwd', $passwd, PDO::PARAM_STR); 
$stmt->execute(); 
echo 'Record Updated';

}

catch (PDOException $e) {
echo 'Connection failed: ' . $e->getMessage();
}
?>

你應該用$contractor_id $_POST["contractor_id"]替換$contractor_id 。參見下面的代碼:

之前

$stmt->bindParam(':contractor_id', $contractor_id, PDO::PARAM_STR); 

之后

$stmt->bindParam(':contractor_id', $_POST["contractor_id"], PDO::PARAM_STR); 

還有一件事。如果你在where條件下使用它,你不需要更新contractor_id字段。 請參閱以下代碼:

之前:

$sql = "UPDATE contractor_keys SET  
    contractor_id = :contractor_id,
    firstname = :firstname,
    lastname = :lastname,
    address = :address,
    city = :city,
    state = :state, 
    zip = :zip,
    email = :email,
    areacode = :areacode,
    phonenumber = :phonenumber,
    ssnumber = :ssnumber,
    rate = :rate,
    mykey = :mykey,
    passwd = :passwd

WHERE contractor_id = :contractor_id";

后:

$sql = "UPDATE contractor_keys SET  
    firstname = :firstname,
    lastname = :lastname,
    address = :address,
    city = :city,
    state = :state, 
    zip = :zip,
    email = :email,
    areacode = :areacode,
    phonenumber = :phonenumber,
    ssnumber = :ssnumber,
    rate = :rate,
    mykey = :mykey,
    passwd = :passwd

WHERE contractor_id = :contractor_id";

暫無
暫無

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

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