MySQL更新查询不会更改数据库中的值

时间:2014-07-30 19:06:08

标签: php mysql sql-update

我需要一些帮助,我有这个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());
?>

这里应该发生的是用户可以从表单更新数据库中的各个字段。输入的新值将放入各种变量中并用于更新。

感谢。

2 个答案:

答案 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的数据库的正确形式。

希望帮助。