Цикл по массиву, чтобы сбросить известное значение и взорвать в SQL - PullRequest
0 голосов
/ 17 февраля 2011

У меня есть два набора массивов в разных таблицах MYSQL.Это то, что я хочу сделать

               What I Want TO Do
   TABLE_ONE            connect to the table.
                        get the value we want from session_id
                        THEN get the array associated with the value (session_id)
                        explode the array to get individual values.
                        NOW::::: - GO TO TABLE_TWO

   TABLE_TWO            Go straight to the first value from array (TABLE_ONE)
                        Explode the array associated with it.
                        Delete the number that's equal to the session_id
                       _____________________________________________________
                       And so fort....

Более наглядное объяснение ниже: session_id = 4

TABLE_ONE:

   id            array1
   1             4
   2             1
   3             2,5
   4             1,3,4,5
   5             4,5

TABLE_TWO:

   id            array2
   1             4,6,9,2
   2             3,7,8,2
   3             7,12,4,9
   4             1,5,4,8
   5             3,6,12,3,5,4

Итак, поскольку session_id = 4, мы переходим к TABLE_ONE id 4.Массив id-4 равен 1,3,4,5.Итак, теперь мы знаем, что 4 можно найти в id 1,3,4,5 of TABLE_TWO Теперь мы должны взорвать массив TABLE_TWO и удалить 4 из этого массива.Внедрите массив и сохраните новое значение в базе данных.

ЭТО ТО, ЧТО Я СДЕЛАЛ - он удалил бы только 4 из них id-3 и удалил все значения в id-4.Пожалуйста, помогите !!

    $SESSION = 4;
    $depSQL = mysql_query("SELECT array1 FROM TABLE_ONE WHERE id='$SESSION' LIMIT 1"); 
while($row=mysql_fetch_array($depSQL)) { $depARRAY = $row["array1"]; }
$explodedDEP = explode(",", $depARRAY);
foreach ($explodedDEP as $key1 => $value1) {

    $stSQL = mysql_query("SELECT array2 FROM TABLE_TWO WHERE id='$value1'"); 
    while($get=mysql_fetch_array($stSQL)) { $stARRAY = $get["array2"];}
    $explodedST = explode(",", $stARRAY);
        foreach ($explodedST as $key2 => $value2) {
              if ($value2 == $SESSION) {
                      unset($explodedST[$key2]);
              }
        }
         $newST = implode(",", $explodedST);
     $sql = mysql_query("UPDATE TABLE_TWO SET array2 ='$newST' WHERE id='$value2'");

}
exit();

Пожалуйста, помогите !!!Я действительно борюсь с этим.Я пробовал это в течение нескольких часов, и я действительно не получил где-нибудь.Я думаю, что проблема с вставкой в ​​базу данных.Пожалуйста, помогите.

Ответы [ 2 ]

1 голос
/ 17 февраля 2011

Вы можете избежать одного цикла, используя array1 во втором SQL-запросе напрямую, поскольку это уже список, разделенный запятыми.

Попробуйте это: РЕДАКТИРОВАТЬ: Обновлен код после тестирования.

    $SESSION['ID'] = 4;

$depSQL = mysql_query("SELECT array1 FROM TABLE1 WHERE id='".$SESSION['ID']."' LIMIT 1"); 

while($row=mysql_fetch_array($depSQL)) 
{ 
    $depARRAY = $row["array1"]; 
}
$stSQL = mysql_query("SELECT id, array2 FROM TABLE2 WHERE id IN ($depARRAY)") or die("Query Error"); 
while($get=mysql_fetch_array($stSQL)) { 
    $stARRAY = $get["array2"];
         $id =  $get["id"];
    $explodedST = explode(",", $stARRAY);
    foreach ($explodedST as $key2 => $value2) {
            if ($value2 == $SESSION['ID']) {
                            unset($explodedST[$key2]);
            }
    }
    $newST = implode(",", $explodedST);
    echo $id . " " . $newST . "<BR/>" ;
    $sql = mysql_query("UPDATE TABLE2 SET array2 ='$newST' WHERE id='$id'");
}
exit();
1 голос
/ 17 февраля 2011

$SESSION - массив, которому нельзя присвоить значение, подобное этому $SESSION = 4;

присвоить значение, как это

$SESSION['id'] = 4;
if ($value2 == $SESSION['id']) {
...