2017-10-06 270 views
0

我想更新MySQL數據庫中的記錄中的每個字段(16個字段加上關鍵字)與使用php的窗體中的一些新數據。它與INSERT正常工作,但當我嘗試更改爲UPDATE時,它不會這樣做。我也覺得這是一個很長的路要做到這一點,有可能是一種更具有迭代的解決方案,我會很感激一些幫助,請:php mysql一次更新一個記錄中的多個字段

<?php 
require_once 'login.php'; 
$con=mysqli_connect($hh,$un,$pw,$db); 
// Check connection 
if (mysqli_connect_errno()) 
    { 
    echo "Failed to connect to MySQL: " . mysqli_connect_error(); 
    } 
echo 'Connected successfully'; 

$sql = "UPDATE PiBQ_Config 
     SET (upButton, dnButton, stepCore1, stepCore2, stepCore3, stepCore4, limSwitch, waitTime, maxPosn, pidKp, pidKi, pidKd, intMax, intMin, sleepTime, progRun) = 
     ('$_POST[upButton]', '$_POST[dnButton]', '$_POST[stepCore1]', '$_POST[stepCore2]', '$_POST[stepCore3]', '$_POST[stepCore4]', '$_POST[limSwitch]', '$_POST[waitTime]', '$_POST[maxPosn]', '$_POST[pidKp]', '$_POST[pidKi]', '$_POST[pidKd]', '$_POST[intMax]', '$_POST[intMin]', '$_POST[sleepTime]', '$_POST[progRun]') 
     WHERE tableKey = 1"; 

mysqli_query($con,$sql); 

echo "1 record added"; 
header ('location: ../settings.php'); 

mysql_close($con) 
?> 
+0

將您的「=」符號更改爲「VALUES」 – ATechGuy

+0

請注意,即使此操作成功,您也應該不以這種方式構建查詢。請查看[預準備語句和綁定參數](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php) –

回答

0

單獨設置每個字段例如:

"UPDATE PiBQ_Config 
     SET upButton = '$_POST[upButton]', 
     dnButton ='$_POST[upButton]', 
     stepCore1 = '$_POST[dnButton]', 
    . 
    . 
    .//the rest of variables 
    WHERE tableKey = 1" 
0

此方法根據三個參數創建一個查詢:表名,一個以列名爲關鍵字的關聯數組,以及另一個具有要更新的列的名稱作爲where語句的鍵。

public function update($table, $data, $where) 
{ 
    $query='UPDATE `'.$table.'` SET '; 
    foreach($data as $key => $value) 
    { 
     $query .= '`'.$key.'`=:'.$key.','; 
    } 
    $query = substr($query, 0, -1); 
    $query .= ' WHERE '; 
    foreach($where as $key => $value) 
    { 
     $query .= '`'.$key.'`=:'.$key.','; 
    } 
    $query = substr($query, 0, -1); 

    $data += $where; 

    $update = $this->db->prepare($query); 
    $update->execute($data); 
} 

它會建立一個查詢並執行它。您應該使用PDO並準備好語句以獲得更高的安全性。

例子:

比如你要更新數據庫中的用戶名。

$firstName = 'newFirstName'; 
$lastName = 'newLastName'; 
$id = idOfUserYouWantToUpdate; 

$table = 'users'; 
$data = array('user_firstname'=>$firstName, 'user_lastname'=>$lastName); 
$where = array('user_id'=>$id) 

update($table, $data, $where); 
相關問題