我有一个需要用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();
}
}发布于 2012-06-29 18:21:07
首先,$_session和$_SESSION是不一样的。
也不要使用mysql_query或类似的(因为它不安全)使用PDO
发布于 2012-06-29 19:06:55
如果没有更多的信息,这是很难纠正的(而且有几个错误- probaby剪切和粘贴),所以我将一个接一个地拆分,你可以从那里开始。
1-$_SESSION‘’delete row‘=$_POST’‘idval’;
如果'idval‘来自多个输入(即)那么它已经是一个数组了,你应该有$_SESSION‘’delete row‘=$_POST’‘idval’;如果你是在一个输入数组中循环(例如,试图从许多帖子中追加,那么它就是正确的)
2- $idavls = join(',‘,$_session’‘delete row’;
$_SESSION (你说这是一种类型),你还需要一个括号/bract作为结尾
".$page['db-name']."‘leads_tbl-view’.”AND lead_status = '1‘AND lead_id NOT IN (".$idvals.") ORDER BY lead_added";
首先,正如allen213指出的那样,这是非常不安全的。即使您不使用PDO来确保变量的安全,也请将所有输入强制转换为(int) (假设in为整数),或者至少将输入包装在mysql_real_escape_string()中。
其次,问题中的逻辑不太合理。您说您想要从视图中删除ID,但您所做的是重新创建视图,其中只删除了$_SESSION‘’delete row‘中的那些IDs因此这可能会重新引入以前从视图中删除的ID。实际上,您需要保留$_SESSION‘’delete row‘并不断添加,以确保下次创建视图时,所有的ID都会被删除。
我希望这能有所帮助。如果没有,可能需要更多的代码(例如,你使用的发送数据的表单,任何其他影响会话的表单等)。
https://stackoverflow.com/questions/11259802
复制相似问题