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