-1

我在 php 中使用这个 foreach 循环来选择每个$_SESSION变量

<?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- 我需要检查所有这些。

这可能吗?

4

3 回答 3

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
   }
?>
于 2013-09-16T07:36:24.960 回答
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 = (?)');
于 2013-09-16T07:43:38.950 回答
0

在你的 foreach 中,添加一个变量 $i 如果满足条件则增加:

$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 
 }

?>
于 2013-09-16T07:46:00.290 回答