在我的php / sql脚本中出错?

时间:2014-02-06 12:08:44

标签: php sql sql-injection

在尝试创建用户可以买卖股票的网站时,我在尝试实施“卖出”选项时遇到以下错误。用户可以输入他们拥有的某些股票的符号,然后网站应该删除所有具有该符号的股票(通过POST方法)。我在sell.php(控制器)中使用以下sql语句:

query("DELETE FROM userstocks WHERE id = ".$_SESSION["id"]." 
                                     AND symbol = ". $_POST["symbol"] ) ;  
query("UPDATE users SET cash = cash + 200 WHERE id = " . $_SESSION["id"]) ;   
render("sellconfirmation.php", ["cash" => $cash]); 

但DELETE FROM查询存在一些错误。我收到以下错误:

  

致命错误:'where子句'中的未知列'fb'    第139行/home/jharvard/vhosts/pset7/includes/functions.php

我觉得这很奇怪,因为当我手动输入实际的'fb'股票(as in: AND symbol = 'symbol' )时,一切都运行得很好。我希望网站根据用户输入的内容删除股票。

问题:DELETE FROM查询有什么问题?

2 个答案:

答案 0 :(得分:2)

将符号添加到符号

query("DELETE FROM userstocks WHERE id = " . $_SESSION["id"] . " 
                   AND symbol = '". $_POST["symbol"]."'" ) ; 

修改

还可以使用mysqli_real_escape_stringPDO::quote来保护您的字符串。

答案 1 :(得分:2)

您错过了关闭删除查询中的引用。试试这个

query("DELETE FROM userstocks WHERE id = " . $_SESSION["id"] . " 
                          AND symbol = '". $_POST["symbol"]."'" ) ;