使用PDO和Mysql检查数组中是否存在记录



无论数组中是否存在记录,我都试图在mysql中获取一条记录。我在网上搜索过关于使用array_key_exists函数的信息,不幸的是,即使数组中存在记录,它总是给我"Match not found"。

这是我的输出

Array ( [0] => Array ( [0] => Array ( [GUESTCHECK] => 10017 [0] => 10017 ) [1] => Array ( [GUESTCHECK] => 10024 [0] => 10024 ) [2] => Array ( [GUESTCHECK] => 10066 [0] => 10066 ) [3] => Array ( [GUESTCHECK] => 10084 [0] => 10084 ) [4] => Array ( [GUESTCHECK] => 10150 [0] => 10150 ) [5] => Array ( [GUESTCHECK] => 10154 [0] => 10154 ) [6] => Array ( [GUESTCHECK] => 10223 [0] => 10223 ) [7] => Array ( [GUESTCHECK] => 10224 [0] => 10224 ) [8] => Array ( [GUESTCHECK] => 10225 [0] => 10225 ) [9] => Array ( [GUESTCHECK] => 10261 [0] => 10261 ) [10] => Array ( [GUESTCHECK] => 10284 [0] => 10284 ) [11] => Array ( [GUESTCHECK] => 10298 [0] => 10298 ) [12] => Array ( [GUESTCHECK] => 20012 [0] => 20012 ) [13] => Array ( [GUESTCHECK] => 20014 [0] => 20014 ) [14] => Array ( [GUESTCHECK] => 20054 [0] => 20054 ) [15] => Array ( [GUESTCHECK] => 20056 [0] => 20056 ) [16] => Array ( [GUESTCHECK] => 20061 [0] => 20061 ) [17] => Array ( [GUESTCHECK] => 20131 [0] => 20131 ) [18] => Array ( [GUESTCHECK] => 20160 [0] => 20160 ) [19] => Array ( [GUESTCHECK] => 20163 [0] => 20163 ) [20] => Array ( [GUESTCHECK] => 20183 [0] => 20183 ) ) ) 

告诉我的代码出了什么问题来帮助我?

$gchecksummary = "SELECT DISTINCT GUESTCHECK FROM `items` 
where CODE = 771012 and DATE = '1/1/2018' or CODE = 771013 
and DATE = '1/1/2018' or CODE = 782012 
and DATE = '1/1/2018' or CODE = 774012 
and DATE = '1/1/2018' or CODE = 775203 
and DATE = '1/1/2018' or CODE = 775202 and DATE = '1/1/2018'";
$execgchecksummary  = $conn->prepare($gchecksummary);
$execgchecksummary->execute();

while($fetchgchecksummary = $execgchecksummary->fetchAll()){
$results[] = $fetchgchecksummary;
} 

print_r($results);
echo "<br />";
if (array_key_exists("10017", $results))
{
echo "Match found";
}
else
{
echo "Match not found";
}

问题出现在代码逻辑和sql查询中。

为什么要采用不必要的行数组并在其中进行查找?

此外,您正在多次重复具有相同值的DATE条件

您可以在查询中定义GUESTCHECK的条件,然后检查结果计数并执行fetchAll(如果需要数据(。

行数据示例:

$query = "
SELECT * 
FROM `items` 
WHERE 
GUESTCHECK = 10017 
AND
CODE IN (771012, 782012, 774012, 775203, 775202) 
AND
DATE = '1/1/2018'
";
$statement = $conn->prepare($query);
$statement->execute();
if ($statement->rowCount() > 0)
{
echo "Match found";
$items = $statement->fetchAll();
var_dump($items);
}
else
{
echo "Match not found";
}

不从数据库获取行的示例:

$query = "
SELECT 1
FROM `items` 
WHERE 
GUESTCHECK = 10017 
AND
CODE IN (771012, 782012, 774012, 775203, 775202) 
AND
DATE = '1/1/2018'
LIMIT 1
";
$statement = $conn->prepare($query);
$statement->execute();
if ($statement->rowCount() > 0)
{
echo "Match found";
}
else
{
echo "Match not found";
}

p.s.请确保您已将索引添加到GUESTCHECKCODE字段,以帮助DB引擎有效地搜索数据。

最新更新