首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >如何比较PHP数组中的PHP变量和值

如何比较PHP数组中的PHP变量和值
EN

Stack Overflow用户
提问于 2015-08-09 23:09:18
回答 1查看 1.3K关注 0票数 2

我试图执行一个SQL查询,将数据库中的一列数据提取到PHP数组中,然后在该数组中搜索我的会话变量。我打印了数组的内容,看起来查询正常,并且正在填充数组,但如果(in_array("$session", $result))不能正常工作,则进行比较。

我知道会话变量包含的字符串在PHP数组中。但$execute从不向FALSE投递。知道为什么吗?

代码语言:javascript
复制
$confirm = $_GET['name'];
$execute = TRUE;
session_start();
$session = $_SESSION['sessionID'];
$result = array();

    try{
        $conn = new PDO("mysql:host=$servername; dbname=$dbname", $username, $password);
        $conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
        if(substr($session, 0, 2) === 'DS'){
            $sql = $conn->prepare("SELECT confirmNum FROM  `DSattendance`");
            $sql->execute();
            $result = $sql->fetchAll();

        }
        else if (substr($session, 0, 2) === 'BYOD'){
            $sql = $conn->prepare("SELECT confirmNum FROM BYODattendance");
            $sql->execute();
            $result = $sql->fetchAll();

        }    
    }
    catch(PDOException $e){echo $sql . "<br>" . $e->getMessage();}

    if (in_array("$session", $result)) {
            echo "true";
            $execute = FALSE;
    }

    if ($execute == FALSE)
            echo "ALREADY REGISTERED";

var_dump($result) yields: 

array(10) { 
[0]=> array(2) { ["confirmNum"]=> string(11) "adfafafafaa" [0]=> string(11) "adfafafafaa" } 
[1]=> array(2) { ["confirmNum"]=> string(11) "adsfafafaff" [0]=> string(11) "adsfafafaff" } 
[2]=> array(2) { ["confirmNum"]=> string(11) "asdfafafafa" [0]=> string(11) "asdfafafafa" } 
[3]=> array(2) { ["confirmNum"]=> string(11) "christrader" [0]=> string(11) "christrader" } 
[4]=> array(2) { ["confirmNum"]=> string(11) "christradfe" [0]=> string(11) "christradfe" } 
[5]=> array(2) { ["confirmNum"]=> string(11) "sadfadfafaf" [0]=> string(11) "sadfadfafaf" } 
[6]=> array(2) { ["confirmNum"]=> string(11) "sadfsfafaaf" [0]=> string(11) "sadfsfafaaf" } 
[7]=> array(2) { ["confirmNum"]=> string(11) "sdfsafsadfa" [0]=> string(11) "sdfsafsadfa" } 
[8]=> array(2) { ["confirmNum"]=> string(11) "trraafafafa" [0]=> string(11) "trraafafafa" } 
[9]=> array(2) { ["confirmNum"]=> string(11) "wesdfdfasfa" [0]=> string(11) "wesdfdfasfa" } }
EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2015-08-09 23:20:32

PDO语句fetchAll正在返回数据库中结果的多维数组。您需要先循环它们,并格式化一个新数组,您可以使用该数组来检查会话。

代码语言:javascript
复制
foreach($result as $value) {
    $array[] = $value['confirmNum'];
}

if( in_array($session, $array)) {
    // your code here
}

正如@ are 12086所指出的,根据您正在使用的PHP版本,可以使用:$result = array_column('confirmNum', $result);来避免使用$result = array_column('confirmNum', $result);循环。但是,这确实需要PHP5.5.0或更高版本。

票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31909700

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档