在会话数组中存储临时值以在mysql查询中使用

时间:2012-06-29 10:02:35

标签: php mysql session

我有一个需要使用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();


        }

        }

2 个答案:

答案 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(你说这是一种类型)你还需要一个支架/苞片结束

    • $ 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“;
  1. 正如allen213指出的那样,这是非常不安全的。即使您不使用PDO来使变量安全,请将所有输入转换为(int),假设ID是整数,或者至少将输入包装在mysql_real_escape_string()中。

    其次,问题中的逻辑并没有多大意义。您说您想要从视图中删除ID,但您正在做的是重新创建视图,只删除$ _SESSION ['delete-row']中的那些ID - 因此这可能会重新引入先前从视图中删除的ID。您实际上需要保留$ _SESSION ['delete-row']并继续添加它以确保下次创建视图时,然后删除所有ID。

    我希望有所帮助。如果没有,可能需要更多代码(即您使用发送数据的表格,以及影响会话等的其他任何形式等。