2013-09-16 4 views
-1

Я использую этот Еогеасп цикл в PHP, чтобы выбрать каждый $_SESSION переменнойPHP, если оператор с помощью цикла Еогеасп

<?php 
//reseller info 
foreach ($_SESSION["domain.co.uk"]["resellers"] as $reseller) 
{ 
    $sql2="SELECT * from reseller where sequence = '".$reseller."' "; 
    $rs2=mysql_query($sql2,$conn) or die(mysql_error()); 
    $result2=mysql_fetch_array($rs2); 
    $ResellerID = $result2["sequence"]; 
} 
?> 

, очевидно, есть больше чем один, и мне нужно проверить на странице:

if($this_var = $ResellerID) 
{ 
... 

, но это будет только проверка инструкции if для одного $ResellerID - мне нужно проверить все из них.

это возможно?

+0

Да, это возможно, но далеко не ясно, что вы проверяете или как вы собираетесь действовать, как только вы проверили. –

+0

in if statement ** == ** вместо ** = **. –

+1

Привет, Чарли, было бы полезно прочитать мой ответ и взять на борт мои комментарии о SQL Injection и использовании mysql_query(). Этот вызов будет удален из PHP в будущем, поэтому вы должны прекратить его использовать :-) –

ответ

1

if статья в foreach петля.

<?php 
//reseller info 
foreach ($_SESSION["integradigital.co.uk"]["resellers"] as $reseller) 
{ 
    $sql2="SELECT * from reseller where sequence = '".$reseller."' "; 
    $rs2=mysql_query($sql2,$conn) or die(mysql_error()); 
    $result2=mysql_fetch_array($rs2); 
    $ResellerID = $result2["sequence"]; 

    if($this_var == $ResellerID) 
    { 
     // Something to do 
    } 
} 
?> 

Или вы можете проверить с in_array как:

<?php 
    $rid = array(); 

    foreach ($_SESSION["integradigital.co.uk"]["resellers"] as $reseller) 
    { 
     $sql2="SELECT * from reseller where sequence = '".$reseller."' "; 
     $rs2=mysql_query($sql2,$conn) or die(mysql_error()); 
     $result2=mysql_fetch_array($rs2); 
     $rid[] = $result2["sequence"]; 
    } 

    if(in_array($this_var, $rid)) 
    { 
     // Something to do 
    } 
?> 
1

Для начала, вы должны немедленно прекратить использование любой mysql_ * функции. Посмотрите здесь: http://php.net/manual/en/function.mysql-query.php

Интерфейс теперь устарел, и вы должны использовать PDO_MySQL или MySQLi.

У вас также есть уязвимость в SQL-инъекции в коде, поскольку вы не дезактивируете ввод SQL-запроса.

Чтобы ответить на вопрос, который вы могли так что-то вроде этого:

<?php 
//reseller info 
foreach ($_SESSION["integradigital.co.uk"]["resellers"] as $reseller){ 
    $stmt = $db->prepare('SELECT * FROM reseller WHERE sequence = (?)'); 
    $stmt->execute(array($reseller)); 
    $result = $stmt->fetchAll(); 
    $resellerID = $result["sequence"]; 

    if($this_var == $resellerID){ 
     //Your code here 
    } 
} 
?> 

Вы должны также избегать использования SELECT *, где это возможно, и вместо того, чтобы заменить * с именами полей. Если новые поля будут добавлены в будущем, запрос будет потенциально получать и возвращать данные, которые не требуются.

$stmt = $db->prepare('SELECT name, address FROM reseller WHERE sequence = (?)'); 
0

внутри Еогеасп, добавьте переменную $ I, что приращение, если условие:

$ я = 0;

<?php 
//reseller info 
foreach ($_SESSION["integradigital.co.uk"]["resellers"] as $reseller) 
{ 
    $sql2="SELECT * from reseller where sequence = '".$reseller."' "; 
    $rs2=mysql_query($sql2,$conn) or die(mysql_error()); 
    $result2=mysql_fetch_array($rs2); 
    $ResellerID = $result2["sequence"]; 

    if($this_var == $ResellerID) 
    { 
     $i++;// or change $i to boolean 
    } 
} 

if($i>0){ 
    //your code here 
} 

?> 
Смежные вопросы