Функция Concat () или альтернативное решение в запросе MySQL

0

Я пытаюсь добавить символ до/после значения в запросе mysql. но я не могу заставить его работать. Это та часть, которая не работает в моем случае:

$query = "select CONCAT ('.', DuRpt) as DuRpt, DaRpt from DDtb order by DATE DESC"; 

Вы можете увидеть полный код ниже. Любые идеи, почему это не работает, или я могу получить альтернативное решение, пожалуйста. Благодарю.

<div class="container">
<div class="left">
<?php

include ("etc/config.php");

$query = "select concat ('.', DuRpt) as DuRpt, DaRpt from DDtb order by DATE DESC"; 
$result = mysqli_query($link, $query); 
if (!$result) { 
    $message = 'ERROR:' . mysqli_error($link); 
    return $message; 
} else { 
    $i = 0; 
    echo '<form name="select" action="" method="GET">';
    echo '<select name="mySelect" id="mySelect"  size="44" onchange="this.form.submit()">'; 
    while ($i < mysqli_field_count($link)) { 
        $meta =  
            mysqli_fetch_field_direct($result, $i); 
        echo '<option>' . $meta->name . '</option>'; 
        $i = $i + 1; 
    } 
    echo '</select>';
    echo '</form>';
}

    ?>

   </div>
  <div>

  <?php

if(isset($_GET['mySelect'])) {
    $myselect = $_GET['mySelect']; 
    $sql = "SELECT '$myselect' as mySelect from DDtb order by DATE DESC";   
    $result = mysqli_query($link, $sql);   

    if ($result->num_rows > 0) {

        $table_row_counter = 3;
        echo '<table>';

        while($row = $result->fetch_assoc()) 
        {
            $table_row_counter++;
            if ($table_row_counter % 30 == 1) {
                echo '</table>';
                echo '<table>';
            }

            echo "<tr><td>" . $row["mySelect"] . "</td></tr>";

        }
    }
} 

echo '</table>';
mysqli_close($link);
?> 

</div>
</div>
  • 0
    Вы получаете какую-либо ошибку? Как выглядит формат вашего DDtb?
  • 0
    Я не получаю никакой ошибки. и странно то, что результаты выводятся без символа (.), я получаю только простые результаты.
Показать ещё 8 комментариев
Теги:

2 ответа

1
Лучший ответ

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

if(isset($_GET['mySelect'])) {
    // configure every option here, if there not pre/postfix, use a blank string
    $prepostfixes = [
        'DuRpt' => ['.', '.'],
        'DaRpt' => ['', ''],
    ];
    $myselect = $_GET['mySelect'];
    if (!isset($prepostfixes[$myselect])) {
        die ('Unknown Select'); // this will prevent sql injection
    }
    $sql = "SELECT '$myselect' as mySelect from DDtb order by DATE DESC";
    $result = mysqli_query($link, $sql);

    if ($result->num_rows > 0) {

        $table_row_counter = 3;
        echo '<table>';
        $prefix = $prepostfixes[$myselect][0];
        $postfix = $prepostfixes[$myselect][1];

        while($row = $result->fetch_assoc())
        {
            $table_row_counter++;
            if ($table_row_counter % 30 == 1) {
                echo '</table>';
                echo '<table>';
            }

            echo "<tr><td>" . $prefix . $row["mySelect"] . $postfix . "</td></tr>";

        }
    }
}
  • 0
    Большое спасибо, Хартнетт. Это работает для меня.
0

Просто обновите свой код и удалите из него дубликат DuRpt.

$query = "select concat ('.', DuRpt) as DuRpt from DDtb order by DATE DESC"; 
  • 0
    Извините, я не понимаю, что вы имеете в виду под дубликатом DuRpt. Я попробовал ваше предложение в коде, оно не сработало.
  • 0
    вы используете phpmyadmin?
Показать ещё 10 комментариев

Ещё вопросы

Сообщество Overcoder
Наверх
Меню