[英]Check if a record exists in an array using PDO and Mysql
我試圖獲取我的mysql中的記錄,無論記錄是否存在於數組中。 我已經在網上搜索了有關使用array_key_exists函數的信息,但是不幸的是,即使記錄存在於數組中,它也總是給我“找不到匹配項”。
這是我的輸出。
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";
}
ps確保已將索引添加到GUESTCHECK
和CODE
字段中,以幫助數據庫引擎有效地搜索數據。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.