Я работаю на PHP, я должен определить переменные в последовательности, чтобы сохранить в Mysql. И имя поля, и имя переменной должны быть одинаковыми в моем случае.
Могу ли я объявить такую переменную
$1 OR $2 etc
Если нет, то почему нет и если да, то почему?
Я пытался:
$id = 0; $6 = $_REQUEST['6']; $7 = $_REQUEST['7']; $8 = $_REQUEST['8']; $xary = array('6','7','8','9') $oAppl->save_record("tablename", $id, "id");
которые дают мне ошибку.
Также можно создавать и использовать поля в Mysql с тем же именем?
Именно так был разработан PHP. Вы не можете запустить имя переменной с номером.
Что вы можете сделать, это использовать подчеркивание:
$_6 = $_REQUEST['6'];
EDIT: поскольку переменные начинаются с $ в PHP, можно было бы иметь переменные, начинающиеся с чисел, но это было бы немного запутанным для большинства людей, поскольку нет другого языка, который допускает переменные, начинающиеся с чисел (или, по крайней мере, не знаю никого).
Но давайте представим, что переменные, начинающиеся с чисел, разрешены.
Можете ли вы представить себе коллегу, говорящего вам: 23 равно 74? Это немного запутанно. Слушание n23 равно 74 имеет больше смысла. Вы знаете, что n23 – это переменная без явного указания этого.
Да, вы можете объявлять переменные в PHP, которые начинаются с числа:
${'1'} = 'hello';
Это объявляет переменную с именем переменной "1"
в PHP.
Чтобы получить доступ к нему, вам нужно снова использовать синтаксис привязки:
echo ${'1'};
Это необходимо, потому что в PHP-коде дословно вы не можете писать:
echo $1;
Это даст синтаксическую ошибку.
Также можно создавать и использовать поля в Mysql с тем же именем?
Да, вы можете, он работает аналогично PHP. В Mysql вам также нужно указать идентификатор номера для столбца, котировка отличается:
mysql> create table test (`0` INT); mysql> describe test; +-------+---------+------+-----+---------+-------+ | Field | Type | Null | Key | Default | Extra | +-------+---------+------+-----+---------+-------+ | 0 | int(11) | YES | | NULL | | +-------+---------+------+-----+---------+-------+
Здесь используются обратные элементы (по умолчанию конфигурация Mysql). Как руководство по PHP, так и руководство Mysql объясняют детали этого, также есть много связанных вопросов с цитированием идентификаторов как для PHP, так и для Mysql на веб-сайте Stackoverflow.
Хорошо подумайте об этом:
$2d = 42; $a = 2d;
Что такое? 2,0? или 42?
Подсказка, если вы не получите ее, d после числа означает номер, прежде чем он станет двойным литералом
Трудно однозначно определить, является ли числовой символ в модуле компиляции литералом или идентификатором.
Языки, где пространство незначителен (например, ALGOL и оригинальный FORTRAN, если я правильно помню), не могли принимать номера, чтобы начинать идентификаторы по этой причине.
Это идет назад – перед специальными обозначениями обозначить память или числовую базу.
Для более подробного обсуждения. Почему имена переменных не начинаются с цифр?
Это не имеет смысла. Но вы все равно можете использовать динамические имена переменных.
<?php $name = 1; $ $name = 'name'; // $ 1 = 'name'; // the same, but syntax not allowed var_dump($ $name); // value of $1 var_dump(${$name}); var_dump($$name);
Вы не можете определить, какая переменная начинается с численных значений в PHP. Взгляните на приведенную ниже ссылку. Он содержит основы определения переменных.
Переменные PHP – основы
Это своего рода наследие, начиная с ранее разработанных языков, таких как C, Fortran и т. Д. Также некоторые языки сценария оболочки имеют специальные средства для идентификаторов, начинающихся с цифры, а именно входных параметров. Стандарты PHP просто решили соблюдать это общее правило.
Как говорится в документации по php , вы не можете:
основы
Переменные в PHP представлены знаком доллара, за которым следует имя переменной. Имя переменной чувствительно к регистру.
Имена переменных следуют тем же правилам, что и другие метки в PHP. Правильное имя переменной начинается с буквы или подчеркивания , за которой следует любое количество букв, цифр или символов подчеркивания.
В качестве регулярного выражения оно выражается следующим образом:
[a-zA-Z_\x7f-\xff][a-zA-Z0-9_\x7f-\xff]*
Что касается MySQL, в документации говорится:
Идентификаторы могут начинаться с цифры, но если цитируемый текст не может состоять только из цифр.
Вы не можете назвать переменную, начинающуюся с числа (или просто числа, если на то пошло). То, что вы можете сделать, это использовать другой символ для запуска (например, и подчеркивание или 3 lettercombo, говоря, какой тип переменной это:
$_1 = $_REQUEST['1'];
или
$str1 = $_REQUEST['1'];
То, что вы также можете сделать, это использовать массив:
$retrievedValuesFromDB = array(); $retrievedValuesFromDB['1'] = $_REQUEST['1'];
Таким образом, вы можете прокручивать оба одновременно:
$i=1; while ($i<mysql_num_rows()) { $retrievedValuesFromDB[$i] = $_REQUEST[$i]; $i++; }