0

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();


        }

        }
4

2 に答える 2

0

$_session は、最初は $_SESSION と同じではありません。

また、mysql_query などを使用しないでください (安全ではないため) PDOを使用してください

于 2012-06-29T10:21:07.357 に答える
0

これは、詳細な情報がなければ修正するのが難しい (そして、いくつかのエラーがあります - おそらく切り取りと貼り付けです) ので、1 つずつ分解して、そこから進むことができます。

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_tblWHERE ".$_SESSION['filter-view']." AND lead_status= '1' AND lead_idNOT IN (".$idvals.") ORDER BY lead_added";

まず、allen213 が指摘しているように、これは非常に安全ではありません。変数を安全にするために PDO を使用しない場合でも、ID が整数であると仮定してすべての入力を (int) としてキャストするか、少なくとも mysql_real_escape_string() で入力をラップしてください。

第二に、質問の論理はあまり意味がありません。ビューからIDを削除したいと言いますが、あなたがしているのは、 $_SESSION['delete-row'] のIDのみを削除してビューを再作成しているため、以前にビューから削除されたIDが再導入される可能性があります。実際には $_SESSION['delete-row'] を保持し、次にビューが作成されたときにすべての ID が削除されるように追加し続ける必要があります。

それが役立つことを願っています。そうでない場合は、追加のコードが必要になる場合があります (つまり、送信データを使用しているフォーム、セッションに影響を与えるその他のものなど)。

于 2012-06-29T11:06:54.643 に答える