Php 添加foreach时,其他文件中出现语法错误

Php 添加foreach时,其他文件中出现语法错误,php,laravel-5,foreach,Php,Laravel 5,Foreach,下面是我得到的错误: 语法错误,文件意外结束,D:\User\Documents…\Controllers\DeviceController.php:68中应为函数(T_function)' 它发生在以下代码中: <?php namespace App\Http\Controllers; use App\Http\Requests; use App\Http\Controllers\Controller; use App\Data\Campaign; use App\Data\Devic

下面是我得到的错误:

语法错误,文件意外结束,D:\User\Documents…\Controllers\DeviceController.php:68中应为函数(T_function)'

它发生在以下代码中:

<?php namespace App\Http\Controllers;

use App\Http\Requests;
use App\Http\Controllers\Controller;
use App\Data\Campaign;
use App\Data\Device;
use App\Helpers\Database;
use App\Helpers\DateHelpers;
use App\Helpers\ProfileHelpers;
use App\Helpers\Utils;
use Illuminate\Http\Request;

class DeviceController extends ApiController
{
    public function show($deviceId)
    {
        return Device::find($deviceId);
    }

    public function update(Request $request, $deviceId)
    {
        $isAlertActive = filter_var($request->input('isAlertActive'), FILTER_VALIDATE_BOOLEAN);
        $isAlertAfter5Pushes = filter_var($request->input('isAlertAfter5Pushes'), FILTER_VALIDATE_BOOLEAN);
        $isAlertAfter10Pushes = filter_var($request->input('isAlertAfter10Pushes'), FILTER_VALIDATE_BOOLEAN);
        $hasAtLeastOneSettingActive = $isAlertActive || $isAlertAfter5Pushes || $isAlertAfter10Pushes;

        $settings = [
            'is_alert' => $isAlertActive,
            'is_alert_after_5_pushes' => $isAlertAfter5Pushes,
            'is_alert_after_10_pushes' => $isAlertAfter10Pushes
        ];

        if ($isAlertActive) {
            $settings['alert_seuil'] = intval($request->input('alertThreshold'));
            $settings['alert_votemini'] = intval($request->input('minVoteCountBeforeAlert'));
        }

        if ($hasAtLeastOneSettingActive)
            $settings['next_alert_in_hours'] = intval($request->input('nextAlertInHours'));

        Device::where('id_device', $deviceId)
              ->update($settings);
    }

/////////////////////////////////////////////////////////////////////////////

    public function putInLocation($sectionId, $locationName)
    {
        $section = Section::find($sectionId);
        if ($section && $section->area->id_client == $this->clientId) {
            Location::createLocation($sectionId, $locationName);
            return self::jsonSuccess();
        }
        else
            return self::jsonBadRequest();
    }

    public function delete($locationId)
    {
        $location = Location::find($locationId);
        if ($location && $location->section->area->id_client == $this->clientId) {
            $location->delete();
            return self::jsonSuccess();
        }
        else
            return self::jsonBadRequest();
    }
}
?>
但我还是犯了同样的错误。
我在我的日志中进行了更深入的搜索,还发现设备显然没有定义。

如果您使用的是vanilla PDO,那么这一行看起来是错误的

$devices = $db->fetchAll("select `id_device_mac` from `dashboard_demo.nao_device`");
fetchAll不执行查询,它只处理已执行查询的结果集

也许是这样的

$sql = 'select `id_device_mac` from `dashboard_demo.nao_device`';
$result = $db->query($sql);
if ( ! $result ) {
    print_r($db->errorInfo())
    exit;
}
while ($device = $result->fetch(PDO::FETCH_OBJ)) {

    $idDevice = $device->id_device;
    $idDeviceMac = $device->id_device_mac;
    echo "<option value='$idDevice'>$idDeviceMac</option>\n";

}
$sql='从'dashboard\u demo.nao\u device'中选择'id\u device\u mac';
$result=$db->query($sql);
如果(!$result){
打印($db->errorInfo())
出口
}
而($device=$result->fetch(PDO::fetch_OBJ)){
$idDevice=$device->id\U设备;
$idDeviceMac=$device->id\u device\u mac;
回显“$idDeviceMac\n”;
}
这样应该可以显示查询中是否发生任何错误


还更改了while循环的内容。从上面的
$device
变量获取数据时,您在那里使用了数组表示法,但在第68行使用了objct表示法?我的手指已经用完了,请给我一点帮助,这是您的
$db->fetchAll
标准PDO,因为它不提交和执行查询,它只是将所有结果集从已执行的查询处理到一个数组中。您可以通过删除DeviceController末尾的?>来关闭PHP文件,然后重试并再次显示您得到的错误跟踪?抱歉,我离开了一会儿。第68行是我的文件的结尾,它是结束php标记前的一个花括号。我删除了?>并得到了相同的错误。是的,这是标准的PDO,但我可能会编辑它,以使用Laravel的方式,因为我使用这个框架。谢谢你花时间来帮助我。我试过了,但还是犯了同样的错误。我编辑了第一篇文章,可能会有帮助。这两个文件之间的关系如何?它们都作用于我数据库中的同一个表(设备表)。一个文件是设备的控制器,另一个文件使用不同的表来显示不同的数据,其中一个表是设备表。您是否将PDO设置为引发异常?我对刚才注意到的问题进行了一些其他修复
$devices = $db->fetchAll("select `id_device_mac` from `dashboard_demo.nao_device`");
$sql = 'select `id_device_mac` from `dashboard_demo.nao_device`';
$result = $db->query($sql);
if ( ! $result ) {
    print_r($db->errorInfo())
    exit;
}
while ($device = $result->fetch(PDO::FETCH_OBJ)) {

    $idDevice = $device->id_device;
    $idDeviceMac = $device->id_device_mac;
    echo "<option value='$idDevice'>$idDeviceMac</option>\n";

}