Получение ошибки T_ENCAPSED_AND_WHITESPACE в PHP

Я создаю приложение в PHP, в котором я получаю сообщение об ошибке в этой строке #

$sql="INSERT INTO table ( `rollnum`,'sessionid', `class`, `subject`, `theory`, `practical`, `type_of`, `term`) VALUES ('$students['rollnum']', '$session','$class','$subject['id']','$_REQUEST[$subject['id'].'_'.$students['rollnum'].'_th']','$_REQUEST[$subject['id'].'_'.$students['rollnum'].'_pr']', '$examtype', '$examsubtype')";

Я не знаю, что не так с этой строкой. Я даже проверил на онлайн-платформе. Они сказали то же самое, что есть ошибка в строке № (выше). Любой, кто может помочь мне с этим Спасибо

4 ответа

Решение

Попробуйте использовать Dreamweaver или Net Bean, которые могут помочь вам найти ошибку в правильном месте

Скорее всего, вам нужно заключить переменные в двойные кавычки в скобках.

$string = "I want to use {$variable1} and {$variable['thisKey']}";

или следующее, которое работает немного быстрее;

$string = 'I want to use'.$variable1.'and '.$variable['thisKey'];

Так что это должно решить вашу непосредственную проблему, однако ваш запрос очень открыт для инъекции, которая может быть очень плохой, особенно если вы используете $_REQUEST прямо в строке запроса. Я бы порекомендовал изучить подготовку ваших запросов перед их выполнением и убедиться, что все опасные вещи исключены.

Я ответил на другой вопрос, который включает в себя безопасный способ сделать запрос здесь с этим ответом

Вам необходимо заключить имена переменных в фигурные скобки:

$sql="INSERT INTO stdexamrecord ( `rollnum`,'sessionid', `class`, `subject`, `theory`, `practical`, `type_of`, `term`) VALUES (
'${students['rollnum']}', 
'$session',
'$class',
'${subject['id']}',
' " . $_REQUEST[ $subject['id'] . '_' . $students['rollnum'] . '_th'] . "',
' " . $_REQUEST[ $subject['id'] . '_' . $students['rollnum'] . '_pr'] . "',
'$examtype', 
'$examsubtype')";

Если в вашей среде PHP были следующие настройки: display_errors = On; error_reporting = E_ALL, вы бы видели:

PHP Parse error: syntax error, unexpected '' (T_ENCAPSED_AND_WHITESPACE), expecting identifier (T_STRING) or variable (T_VARIABLE) or number (T_NUM_STRING)

Как в этом примере:

$array['value'] = 'test';
echo "$array['value']";

Должно быть так:

echo "".$array['value']."";
echo "{$array['value']}";

В любом случае, вы можете использовать цифровые клавиши:

$array[0] = 'test';
echo "$array[0]";
Другие вопросы по тегам