在循环查询结果

时间:2016-12-09 17:12:19

标签: php mysql

我有一个PHP / MySQL请求返回数据(即:调用" my_request")。 我取得了结果,我遇到了麻烦...... 对于每个结果,我需要检查该值是否也在硬编码数组中(即:调用my_array")。 我得到了预期的结果,但它回应了两次。

我应该: - 我的请求 - while /循环结果 - 如果数据在my_array中,则回显1 - 如果my_array

中的数据,则回显0

所以:00110000

我得到:0010000000010000

在这里和那里搜索后,我试过: - 存储结果/结束查询循环/然后遍历数组:无结果

这是一段代码:

$my_array = array('Monday' => array('9:00','10:00','11:00','12:00','14:00','15:00','16:00','17:00'), 'Tuesday' => array('9:00','10:00','11:00','12:00','14:00','15:00','16:00','17:00') /* and so on 'til saturday */ );

$query = " SELECT date, start FROM table WHERE id=2 AND date='2016-12-08' ORDER BY start ";
$resultats = $conn->query($query) or die ("Error :" . mysql_error());

while ($hours = mysqli_fetch_assoc($resultats))
{
extract($hours);

echo" ( $date / $start ) "; /* results are ok , let's say I have 2 resultst ie: 9:00 and 10:00 */

foreach ($my_array as $hour) {
    if( $hour == $start ) { echo"done"; } else { "fail"; }
}
}

这是我得到双倍结果的地方!并且无法找到我做错的地方...... 我是否必须返回存储请求的结果,然后将其用于数组循环?但是怎么样?还是其他什么? 任何线索?感谢

1 个答案:

答案 0 :(得分:0)

我找到了While and for loop not working 我设法绕过答案(由瓦迪姆)制作我自己现在正在工作的东西^^,所以如果它可以对某人有任何帮助...

/* query used below has been prepared at the beginning of the script */
$not_available_hours = array();
$myday = $specialHours[$theday];

$results = $stmt1->execute();
$stmt1->bind_result($date, $start);
$stmt1->store_result();

if ($stmt1->num_rows > 0) {

while($stmt1->fetch()){

$start = strtotime($start);
$debut = date("G:i", $start);

$not_available_hours[] = $debut;
}

foreach ($myday as $hour) {
    if (in_array($hour, $not_available_hours)) {
    $finish = strtotime($hour) + 3600; 
    $fin = date("G:i", $finish);
    echo"already booked !"; /* grey line */
    } else {
$finish = strtotime($hour) + 3600; 
$fin = date("G:i", $finish);
echo"get it !"; /* available -> green line */
}
}