【发布时间】:2014-03-03 21:12:33
【问题描述】:
session_start();
$CompanyName = $_POST['CompanyName'];
$result = mysqli_query ("select CustomerID from CompanyInfo where CompanyName = '.$CompanyName.'");
$row = mysql_fetch_row($result);
$_SESSION["CustomerID"] = $row[0];
我觉得我的报价有问题,但我无法弄清楚。
谢谢。
【问题讨论】:
-
请,在您编写任何更多的 SQL 接口代码之前,您必须阅读 proper SQL escaping 以避免严重的 SQL injection bugs。使用
mysqli时,您应该使用参数化查询和bind_param将用户数据添加到您的查询中。 避免使用字符串插值来实现这一点。 从不将$_POST数据直接放入查询中。 -
是的,这是错误的,您很容易受到sql injection attacks 的攻击。问题的真正解决方案是从根本上改变您编写查询的方式。您还混合了 mysqli(注意 i)和 mysql(没有 i)调用,这也是不可能的。换句话说,你的代码完全被破坏了。
-
您已经在使用
mysqli。好的! (好吧,部分,正如 Marc B 注意到的)更进一步,使用参数绑定。此处为随机 StackOverflow 示例:stackoverflow.com/questions/15748254/… -
您的意思是在第 5 行中使用
mysqli_fetch_row而不是mysql_fetch_row(注意 i)?