我有一个需要使用id列表进行更新的视图。所以我在会话变量中存储已从视图中删除的值,然后进入mySQL查询,如下所示。然后,当重置表单时,值也会从数组中重置。
但它不起作用......这就是我所拥有的。
任何帮助都将不胜感激。
if($_POST['flag']=='flag'){
//collect deleted rows
$_SESSION['delete-row'][] = $_POST['idval'];
//Split session array
$idavls = join(',' , $_session['delete-row'];
$sqlDelete = "CREATE OR REPLACE VIEW filtetbl AS SELECT * FROM `".$page['db-name']."`.`leads_tbl` WHERE ".$_SESSION['filter-view']." AND `lead_status` = '1' AND `lead_id` NOT IN (".$idvals.") ORDER BY `lead_added`";
$result = mysql_query($sqlDelete);
if($result){
echo true;
}
else{
echo mysql_error();
}
}
答案 0 :(得分:0)
$ _ session与$ _SESSION的开头不一样。
也不要使用mysql_query或类似的(因为它不安全)使用PDO
答案 1 :(得分:0)
如果没有更多信息,这很难纠正(并且有几个错误 - probaby剪切和粘贴)所以我会逐个拆分,你可以从那里开始。
1 - $ _SESSION ['delete-row'] [] = $ _POST ['idval'];
如果'idval'来自多个输入(即),则它已经是一个数组,你应该有$ _SESSION ['delete-row'] = $ _POST ['idval'];如果你在一个输入数组中循环(即试图从那时起附加许多帖子,那就是正确的)
2 - $ idavls = join(',',$ _session ['delete-row'];
$ _ SESSION(你说这是一种类型)你还需要一个支架/苞片结束
".$page['db-name']."
。leads_tbl
WHERE”。$ _ SESSION ['filter-view']。“AND lead_status
='1 'AND lead_id
NOT IN(“。$ idvals。”)ORDER BY lead_added
“; 正如allen213指出的那样,这是非常不安全的。即使您不使用PDO来使变量安全,请将所有输入转换为(int),假设ID是整数,或者至少将输入包装在mysql_real_escape_string()中。
其次,问题中的逻辑并没有多大意义。您说您想要从视图中删除ID,但您正在做的是重新创建视图,只删除$ _SESSION ['delete-row']中的那些ID - 因此这可能会重新引入先前从视图中删除的ID。您实际上需要保留$ _SESSION ['delete-row']并继续添加它以确保下次创建视图时,然后删除所有ID。
我希望有所帮助。如果没有,可能需要更多代码(即您使用发送数据的表格,以及影响会话等的其他任何形式等。