Имя столбца из SQL-запроса в PHP - PullRequest
0 голосов
/ 15 мая 2019

Я пытаюсь извлечь имя столбца из базы данных SQL для использования в раскрывающемся списке в HTML. Затем я пытаюсь вставить PHP в раскрывающийся список HTML для отображения имени столбца.

Я использовал массив извлечения для получения выходных данных SQL, используя переменную из другого раскрывающегося списка, чтобы получить соответствующую таблицу SQL. Однако я не могу вернуть имя столбца в PHP. Все, что я получаю, это значение, используя $row[2].

Существует ли простой способ получить имя столбца (т. Е. Нечисловое значение в квадратных скобках после числового значения).

$query="SELECT * FROM ".($units_cat)."";

    if ($result = mysqli_query($link, $query)) {
        $row = mysqli_fetch_array($result);

        echo nl2br (" \n Query was successful \n");
        print_r($row);
        echo "<br>";
    } 

HTML

<option value="<?php $row[2]?>"
        <?php 
        if($_POST['units_from']==$row) 
            echo 'selected="selected"';?>
        >
<?php echo ($row[2])?>
</option>

ВЫХОД ИЗ SQL-запроса

Array ( 
   [0] => 1 
        [id] => 1 
   [1] => Klbs 
        [from_value] => Klbs 
   [2] => 1.0000000000 
        [klbs] => 1.0000000000 
  [3] => 1000.0000000000 
        [pound] => 1000.0000000000 
  [4] => 0.4535923700 
        [ton] => 0.4535923700 
  [5] => 453.5923700000 
        [kg] => 453.5923700000 
  [6] => 224.8089424432 
        [newton] => 224.8089424432 
  [7] => 22.4808942443 
         [dn] => 22.4808942443 
  [8] => 0.2248089424 
         [kn] => 0.2248089424 
    )

Ответы [ 2 ]

0 голосов
/ 04 июня 2019

Я смог сделать это, используя DESCRIBE для вывода массива данных таблицы.Затем создайте массив столбцов.

 $query2=("DESCRIBE ".mysqli_real_escape_string($link, $units_cat));

if ($result2 = mysqli_query($link, $query2)) {
    $table_desc = mysqli_fetch_all($result2);


#Create an array of column values   
    foreach($table_desc as $val) {  
        $col[]=$val[0]; 
    }

Затем вызовите значения столбца в соответствующем раскрывающемся списке.

 <option value="<?php echo($col[2]) ?>"<?php if($_POST['units_from']==($col[2])) echo 
 'selected="selected"';?>><?php echo($col[2]) ?></option>  

Мне пришлось занести в белый список таблицы, на которые ссылался $ units_cat, так как я считаю, что вы не можете подготовить таблицу, поскольку вы не можете привязать параметры к записи таблицы в PHP / SQL.

#Get tables list for whitelisting
$query3="Show tables";
$result3=mysqli_query($link,$query3);

if (!$result3) {
    echo "DB Error, could not list tables\n";
    echo 'MySQL Error: ' . mysqli_error();
    exit;
}

if ($result3=mysqli_query($link,$query3)){
    while($row=mysqli_fetch_row($result3)){

        $tables[]=$row[0];

    }
}       


#UNITS CAT WHITELIST CHECK  
if (in_array($units_cat,$tables)){

    echo nl2br (" \n Units Cat Table exists");

}else{

    echo "Table does not exist";
    mysqli_close($link);
    echo "<br>";
    die("non valid entry");
}
0 голосов
/ 15 мая 2019

с mysql_fetch_array вы можете получить доступ к каждому параметру индивидуально $ Строки [ 'ID']; $ Строки [ 'фунт'];

Однако хранение различных значений для одной и той же переменной (в кг, в тоннах, в ...) в базе данных кажется немного излишним, учитывая, что вы можете сэкономить место с помощью простого преобразования с использованием метрической единицы. ваши пользователи должны каждый раз вводить вес в разных единицах?

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