2014-01-29 2 views
-3

Привет, ребята, я видел код с $row['columnname'] .The код

$myQuery = "SELECT * FROM information_schema.columns WHERE table_name = '$tabname'"; 
$re = mysql_query($myQuery); 


while($row = mysql_fetch_array ($re)){ 
    if(!empty ($row)){ 
       $col_name = $row['COLUMN_NAME']; 

     $myQuery = "SELECT ".$col_name." FROM ".$tabname." WHERE sampleid='".$sid."'"; 
       echo "<br>".$myQuery; 
       $reqq = mysql_query($myQuery); 
       $roww = mysql_fetch_array($reqq); 
       echo "<br>".$roww[$col_name]; 

       } 
      } 

Мой вопрос: что является использование $row[] в PHP?

Используется для вставки значения столбца как $row['columnname'] или просто добавления переменной, как $row[$anyvariable].

+0

Пожалуйста, обратите внимание, как хорошо, что ваш код уязвим для SQL инъекций и 'mysql' осуждается в пользу' mysqli' или 'PDO'. Используйте их вместо этого и используйте подготовленные заявления! – m59

ответ

2

Это называется кронштейн обозначение. $row - массив, обладающий свойствами. В этом случае он назвал свойства, поэтому он является ассоциативным массивом. У ассоциированного массива есть пары ключ/значение. Это выглядит следующим образом:

$myArray = [ 
    'key' => 'value' 
]; 

Чтобы повторить значение свойства выше, вы бы использовать echo $myArray['key'];

В конкретном коде вы включены, имя свойства «COLUMN_NAME», и это имеет значение. Код присваивает это значение переменной $col_name.

Вот еще использование образец, чтобы помочь прояснить все это:

$people = [ 
    'Susan' => [ 
    'Age' => 24, 
    'Phone' => '555-123-4567' 
    ], 
    'Jack' => [ 
    'Age' => 27, 
    'Phone' => '555-9876-5432' 
    ] 
]; 

echo $people['Jack']['Age']; // 27 
+0

, так что в моем кодовом столбце имя является ключевым правилом? –

+0

@codemania Это правильно. – m59

+0

@codemania мой ответ несколько отличается от других. Мне казалось, что вы спрашиваете о скобках. Другие ответы более сосредоточены на mysql. – m59

2
while($row = mysql_fetch_array ($re)){ 

Это утверждение перебирает все строки, возвращаемые в результирующий набор $re и во время цикла, на каждой итерации вы получите текущую строку как массив в переменную с именем $row, это имя может быть что угодно, это Безразлично Обязательно должен быть $row.

Тогда

$col_name = $row['COLUMN_NAME']; 

ли просто читать $row как массив и подбирая значения для ключа COLUMN_NAME. Это будет один из столбцов, которые были возвращены вашим запросом для каждой строки набора результатов. Это также может быть любое имя в зависимости от вашего запроса.

1

это от mysql_fetch_array

возвращает результирующий массив, если был найден ваш запрос/результат, если не только FALSE вместо

0

Как это указано на PHP site:

mysql_fetch_ Массив - извлекает результирующий ряд как ассоциативный массив, числовой массив, или как

Это не переменные, которые идут внутри $row[], это имя столбца, который вы назвали в вашем SELECT запросе.

В вашем случае у вас есть запрос SELECT, чтобы вернуть все столбцы таблицы.'COLUMN_NAME' фактически действительно имя столбца в таблице information_schema.column

0

mysql_fetch_array возвращает массив,

$row = [ 
    'column_name' => 'column_value' 
] 

поэтому заявление

$row = mysql_fetch_array ($re)) 

будет извлекает имена столбцов из INFORMATION_SCHEMA.COLUMNS который будет сохранен в $ col_name.

$col_name = $row['COLUMN_NAME']; 

для далее mysql_fetch_array

Смежные вопросы