Php 检查数组中是否存在mysql行
我有一系列的商店号码。我有一个mysql数据库,这些商店每周都会提交报告。我试图建立一个简单的表格,列出左侧的所有商店,然后根据商店是否提交了每周报告,打上复选标记或x 我可以让StoreNumber数组按其应该的方式放入表列中,但很难检查store\u编号的num\u行是否存在。我想我很接近,但也许不是。提前谢谢 代码如下:Php 检查数组中是否存在mysql行,php,mysql,Php,Mysql,我有一系列的商店号码。我有一个mysql数据库,这些商店每周都会提交报告。我试图建立一个简单的表格,列出左侧的所有商店,然后根据商店是否提交了每周报告,打上复选标记或x 我可以让StoreNumber数组按其应该的方式放入表列中,但很难检查store\u编号的num\u行是否存在。我想我很接近,但也许不是。提前谢谢 代码如下: <?php //set var store as store number //check if var store has kir submitted //if
<?php
//set var store as store number
//check if var store has kir submitted
//if so, put check.
//if not, put x.
//check next store number
//connect to the database
require("../dbfiles/connect.php");
// Date Formatting for MYSQL
if(!empty($_POST['WeekEnding'])){
$WeekEnding = $_POST['WeekEnding'];
$WeekEnding = strtotime($WeekEnding);
$WeekEnding = date('Y-m-d', $WeekEnding);
}
//Array of all stores
$StoreNumber = array(586,
7695,
12510,
24022,
24707,
28373,
30367,
30819,
31396,
31544,
33663,
33475,
39245,
47140,
49647,
49648,
51833,
51833-1,
57107,
60641,
62802,
297,
13778,
26519,
27055,
28311,
31296,
36438,
38156,
48925,
59288);
while($StoreNumber[$x] = 0){
//query to check for info in table
$query = "SELECT * FROM kir1 WHERE WeekEnding = '$WeekEnding' AND storenumber = ' . $StoreNumber[$x] . '";
$response = @mysqli_query($dbc, $query);
echo '<style>
table {
border-collapse: collapse;
width: 100%;
}
th, td {
text-align: left;
padding: 8px;
}
tr:nth-child(even){background-color: #f2f2f2}
th {
background-color: #4CAF50;
color: white;
}
</style>';
echo '<table>
<tr><th><b>Store Number</b></th>
<th><b>KIR</b></th></tr>';
//If connected, build table, then row out each response
if($response) {
$count = mysqli_num_row($response);
if($count > 0){
echo "<tr><td>" . $StoreNumber[$x] . "</td><td> ✔ </td></tr>";
} else {
echo "<tr><td>" . $StoreNumber[$x] . "</td><td> ✗ </td></tr>";
}
}
}
?>
您只需在()子句中使用mysql
$StoreNumber = array(586,
7695,
12510,
24022,
24707,
28373,
30367,
30819,
31396,
31544,
33663,
33475,
39245,
47140,
49647,
49648,
51833,
51833-1,
57107,
60641,
62802,
297,
13778,
26519,
27055,
28311,
31296,
36438,
38156,
48925,
59288);
$StoreNumbers = implode(",", $StoreNumber);
$query = "SELECT * FROM kir1 WHERE WeekEnding = '$WeekEnding' AND storenumber IN ($StoreNumbers)";
//do further operation
编辑
如果是字符串,则可以使用,“
$StoreNumbers = "'".implode("','",$StoreNumber)."'";
在
操作符中使用,其工作方式类似于或
$storeNumbers = array(...);
$query = "SELECT * FROM kir1 WHERE WeekEnding = '$WeekEnding' AND storenumber IN ($storeNumbers)";
查看mysqlsIN()
您可能需要在值周围加引号,因为我认为它们可能是字符串(不确定是否为51833-1)。我也看到了这一点。但在问题中,OP说,我有一个存储编号数组
,所以我认为这些都是编号。:)很明显,它们是字符串。因为我有一个编号为51833-1的存储,所以我将“数字”设置为字符串。虽然这个答案确实让我更接近这个问题的最终目标,但我仍然看不到曙光。最终产品,它将简单地显示一个商店是否已消费了他们的报告,在这种情况下,我会向该经理发送电子邮件,应该如下所示:表商店编号,报告,然后列出商店编号,然后在报告列中列出是或否。谢谢各位。