这是我得到的错误:
语法错误,意外的文件结尾,期望 D:\用户\文档...\控制器\设备控制器.php:68 中的函数 (T_FUNCTION)'
它发生在以下代码中:
<?php namespace AppHttpControllers;
use AppHttpRequests;
use AppHttpControllersController;
use AppDataCampaign;
use AppDataDevice;
use AppHelpersDatabase;
use AppHelpersDateHelpers;
use AppHelpersProfileHelpers;
use AppHelpersUtils;
use IlluminateHttpRequest;
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();
}
}
?>
我在那里没有看到任何语法错误,我多次检查括号,但也许我错过了一些东西?
对我来说奇怪的是,在另一个文件(D:\User\Documents...\Views\Parts\areasettings.php)中添加foreach之前,没有语法错误。这是foreach :
<div class="col-lg-3 col-lg-offset-0 v">
<div class="input-group">
<span class="input-group-addon"><span class="glyphicon glyphicon-barcode"></span></span>
<select class="form-control" id="deviceSelect">
<option selected disabled> <?php echo trans('areasettings.add_id_placeholder') ?> </option>
<option> TEST </option>
<?php
$devices = $db->fetchAll("select `id_device_mac` from `dashboard_demo.nao_device`");
foreach ($devices as $device) {
$idDevice = $device->id_device;
$idDeviceMac = $device->id_device_mac;
//echo "<option value="$idDevice">$idDeviceMac</option>n";
<option value="<?= $device['id_device_mac'] ?>"><?= $device['id_device_mac'] ?></option>
}
?>
</select>
<!--<input type="text" class="form-control" placeholder="<?php echo trans('areasettings.add_id_placeholder') ?>" autocomplete="off"
ng-model="newSectionName">-->
</div>
</div>
提前感谢您对我的帮助!
编辑:用这一行更改了全部获取(拉拉维尔方式):
$devices = DB::table('dashboard_demo.nao_device')->select('id_device_mac')->get()
但我仍然得到同样的错误。我在日志中进行了更深入的搜索,还发现设备显然未定义。
如果您使用的是香草 PDO,则此行看起来不对。
$devices = $db->fetchAll("select `id_device_mac` from `dashboard_demo.nao_device`");
PDO::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";
}
这种方式应该显示查询中是否发生了任何错误。
还更改了 while 循环的内容。您在那里使用了数组表示法,但在从上面的 $device
变量获取数据时使用了 objct 表示法?