我需要一些帮助,我有这个UPDATE查询,它不会更新我的数据库中的记录。也许这是一个我错过的小错误,我可能遗漏了一些新鲜的眼睛可能会更容易。
<?php
$message = '<h4 class="alert_success">A Successfully updated '.$_POST['sell_itemBrand'].' '.$_POST['txtModel'].' - '.$_POST['sell_itemType'].'</h4>';
$color = "";
($_POST['colorSel'] =='old' ? $color = $_POST['color'] : $color = $_POST['newColor']);
mysql_query("UPDATE `total_stock` SET `ItemType` = '".$_POST['sell_itemType']."', `ItemBrand` = '".$_POST['sell_itemBrand']."', `ItemModel` = '".$_POST['txtModel']."', `Cost_Price` = '".$_POST['CostPrice']."', `Color` = '".$color."' WHERE `IMEI` = '".$_POST['current_IME']."'") or die(mysql_error());
?>
这里应该发生的是用户可以从表单更新数据库中的各个字段。输入的新值将放入各种变量中并用于更新。
感谢。
答案 0 :(得分:0)
$_POST['current_IME']
也许,你的意思是:
$_POST['current_IMEI']
答案 1 :(得分:0)
您需要根据自己的安全情况更改代码中的某些内容。
在您的查询中使用$ _POST信息不是一个好的实践因为某些用户可以对您的代码执行SQL注入,以防止使用此函数:
mysql_real_escape_string();
函数mysql_ *已弃用,使用此表单访问数据库不是一个好的实践。
像这样使用:
连接:
$dbh = new PDO('mysql:host=xxx;port=xxx;dbname=xxx', 'xxx', 'xxx', array( PDO::ATTR_PERSISTENT => false));
执行查询:
$query = 'Any query';
$stmt = $dbh->prepare($query);
$stmt->execute();
while ($result = $stmt->fetch(PDO::FETCH_OBJ)) {
var_dump($result);
}
所以在你的情况下你应该这样做:
$query = "UPDATE `total_stock` SET `ItemType` = '?', `ItemBrand` = '?', `ItemModel` = '?', `Cost_Price` = '?', `Color` = '?' WHERE `IMEI` = '?'")
$st = $databaseconnection->prepare($query);
$st->execute(array(mysql_real_escape_string($_POST['sell_itemType']),
mysql_real_escape_string($_POST['sell_itemBrand']),
mysql_real_escape_string($_POST['txtModel']),
mysql_real_escape_string($_POST['CostPrice']),
$color,
mysql_real_escape_string($_POST['current_IME'])));
这是使用php的数据库的正确形式。
希望帮助。