尝试更新数据库中的条目

时间:2013-04-27 09:49:23

标签: php mysql

我正在尝试使用以下代码更新数据库中的记录。我正在尝试更改产品名称,但我收到以下错误:

Could not update data: Unknown column 'Earrings' in 'field list'

代码:

<?php
if(isset($_POST['update']))
{
    $dbhost = 'databasehost';
    $dbuser = 'username';
    $dbpass = 'password';
    $conn = mysql_connect($dbhost, $dbuser, $dbpass);

        if(! $conn )
        {
            die('Could not connect: ' . mysql_error());
        }

        $ProductsID = $_POST['ProductsID'];
        $ProductsName = $_POST['ProductsName'];

        $sql = "UPDATE Products ".
           "SET ProductsName = $ProductsName ".
           "WHERE ProductsID = $ProductsID" ;

        mysql_select_db('databasename');
        $retval = mysql_query( $sql, $conn );
        if(! $retval )
        {
            die('Could not update data: ' . mysql_error());
        }
        echo "Updated data successfully\n";
        mysql_close($conn);
}
else
{
?>

4 个答案:

答案 0 :(得分:1)

你想要这样的东西:

ProductsName = '$ProductsName'

此外,请务必转义该输入,否则您将受到SQL注入。

答案 1 :(得分:1)

您没有对您的数据进行清理,因此根据提交的值,您的查询很可能会中断,更不用说它会让您的数据库敞开,以便攻击者通过SQL Injection进行操作。

请不要使用mysql_函数,因为它们已被删除。您应该使用预先准备好的陈述,请参阅PDOmysqli

至于你的回答,你需要在$ variable

周围加上'引号'

答案 2 :(得分:1)

查询应为

$sql = "UPDATE Products ".
       "SET ProductsName = '$ProductsName' ".
       "WHERE ProductsID = $ProductsID" ;

您忘记用引号括起$ProductName。在处理字符串值时不要忘记这样做。

答案 3 :(得分:1)

您正在尝试将ProductsName设置为现有列,添加引号以让sql解释值:

$sql = "UPDATE Products ".
       "SET ProductsName = '$ProductsName' ".
       "WHERE ProductsID = $ProductsID" ;