如何将PHP变量与PHP数组

时间:2015-08-09 23:09:18

标签: php sql

我正在尝试执行SQL查询以将数据库中的一列数据拉入PHP数组,然后在该数组中搜索我的会话变量。我已经打印了我的数组的内容,看起来查询正在运行并且正在填充数组,但我的比较如果(in_array("$session", $result))无效。

我知道我的会话变量包含的字符串在PHP数组中。但是$execute永远不会翻到FALSE。知道为什么吗?

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

1 个答案:

答案 0 :(得分:2)

PDO语句fetchAll返回数据库中找到的结果的多维数组。您需要首先遍历它们并格式化一个可用于检查会话的新数组。

foreach($result as $value) {
    $array[] = $value['confirmNum'];
}

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

正如@ mr12086所述,根据您使用的PHP版本,您可以使用:foreach来避免$result = array_column('confirmNum', $result);循环。但是,这确实需要PHP 5.5.0或更高版本。