您好目前得到與Id不匹配,但無法找到爲什麼它沒有收到表id(例如0,1,2等),顯示頁面顯示他們好好看着它看着。也可以整理代碼明智的表?似乎與所有<?php ?>
標籤混亂。如何解決這個MYSQL PHP更新函數版本錯誤
盡我所知,使用mysql 5.5。
錯誤:
Could not able to execute UPDATE weightsmeasures SET 1 = 'dszfxc',2 = 'Kilograms',10 = 'Litre',11 = 'Litre',12 = 'Ton',13 = 'vdd',14 = 'mega' WHERE id = 14. You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near '1 = 'dszfxc',2 = 'Kilograms',10 = 'Litre',11 = 'Litre',12 = 'Ton',13 = 'vdd',14 ' at line 1
index.php的輸入形式
<div>
<?php $result = tablename(weightsmeasures); ?>
<form method="post" action="update.php">
<div class="col-8">
<?php while($row = mysqli_fetch_array($result)) {
echo "<tr>";
echo "<td>" . $row['id'] . "</td>"; ?>
<td>
<input class="form-control" type="text" value="<?php echo $row['WeightorMeasure']; ?>" id="<?php echo $row['id']; ?>" name="<?php echo $row['id']; ?>">
</td>
<?php
echo "</tr>";
}
?>
</div>
<input type="submit" value="Update">
</form>
</div>
update.php
$id = $_POST['id'];
$sql = "UPDATE weightsmeasures SET";
$fieldValuePairs = array();
foreach($_POST as $key => $value)
if($key != 'id')
$fieldValuePairs[] = "$key = '$value'";
$sql .= " ". implode(',', $fieldValuePairs)." WHERE id = $id";
問候
**警告**:使用'mysqli'時,您應該使用[參數化查詢](http://php.net/manual/en/mysqli.quickstart.prepared-statements.php)和['bind_param' ](http://php.net/manual/en/mysqli-stmt.bind-param.php)將用戶數據添加到您的查詢。 **不要**使用字符串插值或連接來完成此操作,因爲您創建了嚴重的[SQL注入漏洞](http://bobby-tables.com/)。 **不要**將'$ _POST','$ _GET'或**任何**用戶數據直接放入查詢中,如果有人試圖利用您的錯誤,這可能會非常有害。 – tadman
注意:'mysqli'的面向對象的接口明顯較少,使得代碼更易於閱讀和審計,並且不容易與陳舊的'mysql_query'接口混淆。在你過於投入程序風格之前,它是值得轉換的。例如:'$ db = new mysqli(...)'和'$ db-> prepare(「...」)存在的過程接口是PHP4時代的一個工件,當mysqli API被引入時不應該用於新代碼。 – tadman