Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/80.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
如何将PHP变量与PHP数组中的值进行比较_Php_Sql - Fatal编程技术网

如何将PHP变量与PHP数组中的值进行比较

如何将PHP变量与PHP数组中的值进行比较,php,sql,Php,Sql,我试图执行一个SQL查询,将数据库中的一列数据拉入PHP数组,然后在该数组中搜索会话变量。我已经打印了数组的内容,看起来查询正在运行并正在填充数组,但是如果(在_数组中($session,$result))无法正常运行,则我的比较将失败 我知道会话变量包含的字符串在PHP数组中。但是,$execute从不翻转到FALSE。知道为什么吗 $confirm = $_GET['name']; $execute = TRUE; session_start(); $session = $_SESSION[

我试图执行一个SQL查询,将数据库中的一列数据拉入PHP数组,然后在该数组中搜索会话变量。我已经打印了数组的内容,看起来查询正在运行并正在填充数组,但是如果
(在_数组中($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" } }
$confirm=$\u GET['name'];
$execute=TRUE;
会话_start();
$session=$_session['sessionID'];
$result=array();
试一试{
$conn=newpdo(“mysql:host=$servername;dbname=$dbname”、$username、$password);
$conn->setAttribute(PDO::ATTR_ERRMODE,PDO::ERRMODE_异常);
if(substr($session,0,2)==“DS”){
$sql=$conn->prepare(“从'dsattention`'中选择confirmNum”);
$sql->execute();
$result=$sql->fetchAll();
}
else if(substr($session,0,2)==“BYOD”){
$sql=$conn->prepare(“从byodattendence中选择confirmNum”);
$sql->execute();
$result=$sql->fetchAll();
}    
}
catch(异常$e){echo$sql.
“$e->getMessage();} if(在_数组中($session,$result)){ 呼应“真”; $execute=FALSE; } 如果($execute==FALSE) echo“已注册”; var_dump($result)收益率: 数组(10){ [0]=>数组(2){[“confirmNum”]=>字符串(11)“adfaa”[0]=>字符串(11)“adfaa”} [1] =>数组(2){[“confirmNum”]=>string(11)“adsfaff”[0]=>string(11)“adsfaff”} [2] =>数组(2){[“confirmNum”]=>string(11)“asdfafa”[0]=>string(11)“asdfafa”} [3] =>数组(2){[“confirmNum”]=>string(11)“christrader”[0]=>string(11)“christrader”} [4] =>数组(2){[“confirmNum”]=>string(11)“christradfe”[0]=>string(11)“christradfe”} [5] =>数组(2){[“confirmNum”]=>string(11)“sadfafafaf”[0]=>string(11)“sadfafafafaf”} [6] =>数组(2){[“confirmNum”]=>字符串(11)“sadfsfaf”[0]=>字符串(11)“sadfsfaf”} [7] =>数组(2){[“confirmNum”]=>string(11)“sdfsafsadfa”[0]=>string(11)“sdfsafsadfa”} [8] =>数组(2){[“confirmNum”]=>字符串(11)“trraafa”[0]=>字符串(11)“trraafa”} [9] =>数组(2){[“confirmNum”]=>字符串(11)“WesdFasfa”[0]=>字符串(11)“WesdFasfa”}
PDO语句
fetchAll
返回在数据库中找到的结果的多维数组。您需要首先遍历它们,并格式化一个新的数组,以用于检查会话

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

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

正如@mr12086所指出的,根据您使用的PHP版本,您可以通过使用:
$result=array\u列('confirmNum',$result')来避免
foreach
循环取而代之。但是,这确实需要PHP5.5.0或更高版本。

var\u dump($result)的输出是什么?它很可能返回一个多维数组,因此您的
in_array
无法工作。根据php版本,您可以使用$result=array_列('confirmNum',$result)替换循环;代码更少。绝对是@mr12086,谢谢添加。我更新了我的答案,也包括了你的回答。所给学分:)@user2977729np,很高兴能帮忙。