未知列在选择但不更新时发生?

时间:2013-04-10 22:33:32

标签: php sql

$sql = "SELECT * FROM `productos` WHERE `serial` = ".$_POST['articulo']."";

上面的查询无效,它在'where子句'中显示“未知列'KM3M34KL43M'”这太奇怪了!因为我告诉它列是serial ...

 $sql = "UPDATE `productos` SET `cantidad` = {'".$cantidad."'} WHERE `serial` = ".$_POST['articulo']."";

然而,这个查询工作正常,而where子句是相同的

2 个答案:

答案 0 :(得分:1)

如果文本类型为serial,则必须引用该值,而不是

$sql = "SELECT * FROM `productos` WHERE `serial` = ".$_POST['articulo']."";

它应该是:

$sql = "SELECT * FROM `productos` WHERE `serial` = '".$_POST['articulo']."'";

HOWEVER ,您的代码容易受到SQLInjection的攻击,因此您必须将该值转义为传递用户提供的数据而不会出错。请参阅mysqli_real_escape_string()等方法,并在构建查询时在$_POST['articulo']上使用它。

答案 1 :(得分:0)

可能只是一个错字,但我认为你必须在POST返回的单引号中包含:

$sql = "SELECT * FROM `productos` WHERE `serial` = '".$_POST['articulo']."'";