【发布时间】:2017-09-12 15:46:30
【问题描述】:
我有一个可以编辑和添加语言的产品。在我当前的 api 中,如果已经有一种语言,它可以显示并且可以更新,但我的问题是,如果没有附加细节,例如,我在编辑它时输入了一个新的,数据不会保存在数据库。
if(!empty($body['addtl'])){
$ProdArray = "";
foreach($body['addtl'] as $value){
foreach($value as $key => $innerValue){
if($key!="id")
if(!empty($innerValue))
$ProdArray .= $key."='".$innerValue."', ";
}
$ProdArray = trim($ProdArray, ", ");
$ProdArray .= " WHERE id=".$value['id'];
$sql_query = "UPDATE ProductAddtlDetails SET ".$ProdArray;
$stmt = $dbRemote->prepare($sql_query);
$stmt->execute();
$ProdArray = "";
}
$editFlag = 1;
}
如何解决我的问题?
【问题讨论】:
-
警告:这有一些严重的SQL injection bugs,因为在查询中使用了
$_GET数据。尽可能使用准备好的语句。在mysqli和PDO 中执行这些操作非常简单,其中任何用户提供的数据都使用?或:name指示符指定,稍后使用bind_param或execute填充,具体取决于您是哪个使用。 切勿将$_POST或$_GET数据直接放入您的查询中。 -
我在这里没有看到任何错误检查。查询有效吗?是不是炸了?你需要找出答案。最简单的方法是使用您使用的任何驱动程序启用异常。
标签: php html mysql angularjs api