我正在尝试使用以下代码更新数据库中的记录。我正在尝试更改产品名称,但我收到以下错误:
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
{
?>
答案 0 :(得分:1)
你想要这样的东西:
ProductsName = '$ProductsName'
此外,请务必转义该输入,否则您将受到SQL注入。
答案 1 :(得分:1)
您没有对您的数据进行清理,因此根据提交的值,您的查询很可能会中断,更不用说它会让您的数据库敞开,以便攻击者通过SQL Injection进行操作。
请不要使用mysql_函数,因为它们已被删除。您应该使用预先准备好的陈述,请参阅PDO和mysqli。
至于你的回答,你需要在$ 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" ;