Превращение типа информации в шаге переменных в url в PHP

Estimad@s, у меня есть следующий код и я нуждаюсь в том, чтобы показать эти данные на экране. Случается, что этот ассоциативный array (уже я пробовал с другими и также оно не функционирует) он показывает мне все данные как string и в основании переменные: Цена, Датируй и cod_art они в float, восходите и int соответственно. Я могу меняться в базе данных для того, чтобы все было string как временное решение (я учусь), но мне хотелось бы изучать делать превращение типов в этом случае. Уже я сосредоточился на учебнике php и с функциями, которые они могут помогать конвертировать, но не функционируют.

<?php

try{
    $base = new PDO ("mysql:host=localhost; dbname=brenda_praktikum", "brenda", "hlRgJNJZzd6V7JPYgm68");

    //por si hay algún error en la conexión uso exception y errmode
    $base->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);

    $base->exec("set character set utf8");

$query = "SELECT Секция, Статья, País_de_Origen, Цена, Датирует, cod_art FROM статьи where Секция = 'спорт'";

    $result=$base->prepare($query);

    $result->execute(array());



    $precio=['Precio'];
    $fecha=['Fecha'];
    $cod_art=['cod_art'];

    $precio= ['Precio'];



    while ($register=$result->fetch(PDO::FETCH_ASSOC)){

            echo " Sección: ".$register['Sección'].
             " Artículo: ". $register['Artículo'].
             " País: ".$register['País_de_Origen'].
             " Precio: ".$register['Precio'].
             " Fecha: ".$register['Fecha'].
             " cod_art: ".$register['cod_art']. "<br>";


    }


    $result->closeCursor();

}catch (Exception $e){


    echo "Linea ". $e->getLine();
    echo $e->getMessage();
}

?>

1
задан 06.11.2019, 17:34
1 ответ

Чтобы конвертировать тип, sГіlo ты должен помещать тип между parГ©ntesis перед стоимостью. Например:

$tipoFloat = (float) "10.77";
var_dump($tipoFloat);

Полученные

float(10.77)

AquГ - $tipoFloat serГЎ переменная типа float со стоимостью, показанной в $valor.

, Если в тебе cГіdigo ты хочешь конвертировать какого-либо из данных, полученных от базы данных в algГєn тип, ты можешь делать то же самое.

мы Будем применять это в cГіdigo, вводя ademГЎs какой-то прогресс:

  • ты Можешь создавать array выборов, чтобы перемещать это строителя ее conexiГіn, creГЎndola asГ - конфигурировавшая, как ты хочешь ее, и он не быть должным быть seteando mГЎs сшей потом. Я добавил одну opciГіn, что устанавливает ATTR_EMULATE_PREPARES в FALSE. Он это предотвращает готовить состязавшиеся консультации, которые в каких-то сценах могут заканчиваться в inyecciГіn cГіdigo.
  • charset ты можешь перемещать это используя точку с запятой, despuГ©s имени базы данных.
  • ты не нуждаешься в том, чтобы приготовить консультацию к этому случаю, потому что информация, которую ты перемещаешь его, - установлена, следовательно нет риска inyecciГіn SQL, aquГ - ты можешь использовать query.
  • я снял эти lГ-neas $precio=['Precio'] и т.д., потому что не sГ©, что hacГ-an ahГ, - это ничего не делает.

Например:

try{
    $options = array(
                        PDO::ATTR_EMULATE_PREPARES => FALSE, 
                        PDO::ATTR_ERRMODE => PDO::ERRMODE_EXCEPTION
                    );

    $base = new PDO ("mysql:host=localhost; dbname=brenda_praktikum;charset=utf8", "brenda", "hlRgJNJZzd6V7JPYgm68",$options);
    $query="SELECT Sección, Artículo, País_de_Origen, Precio, Fecha, cod_art FROM articulos where Sección= 'deporte'";
    $result=$base->query($query);
    while ($register=$result->fetch(PDO::FETCH_ASSOC)){
        #Guardamos los datos en variables para que sea más clara la conversión de tipos
        $seccion=$register['Sección'];
        $articulo=$register['Artículo'];
        $pais=$register['País_de_Origen'];
        $precio=(float) $register['Precio'];   #Declarada del tipo float
        $fecha=$register['Fecha'];
        $cod_art=(float) $register['cod_art']; #Declarada del tipo float
        echo " Sección: $seccion Artículo: $articulo País: $pais Precio: $precio Fecha: $fecha cod_art: $cod_art <br />";
    }

    $result->closeCursor();

}catch (Exception $e){

    echo "Linea ". $e->getLine();
    echo $e->getMessage();
}

Рекомендаций

  • не совершай ошибку изменения твоих типов данных в базе данных поэтому. Тип информации должен приспосабливаться к реальности. Если информация манипулирует nГєmeros, он должен быть numГ©rico, не типа varchar.
  • Избегает называть подмостки или колонны с ударными словами или специальными символами. Это может приносить тебе проблемы в неких контекстах.
1
ответ дан 01.12.2019, 12:33
  • 1
    Я нуждаюсь в том, чтобы напечатать данные в array, не переместить их в float, потому что уже está n сохраняемые от этой формы в базе данных, или в Вашем случае восходите и int. В момент хотения показать данные о таблице с array, у которых есть различный тип в string, он не показывает их правильно. có я говорю, что ты добавил меня, это не понимаю, лучше оставлять это así сам, чтобы не запутываться. Спасибо – Brenda Yanela Conzi 08.11.2019, 13:34
  • 2
    @BrendaYanelaConzi, если ты хочешь, чтобы мы помогли тебе, ты должен быть яичным белком, в котором ты спрашиваешь. То, что понятно, состоит в том, что ты хочешь convertilos в float. Если то, что ты желаешь, состоит в том, чтобы перемещать их array, только ты должен объявлять array перед циклом while и потом внутри цикла наполнять array. Например: $datos=array(); while ($register=$result->fetch(PDO::FETCH_ASSOC)){ $datos[]=$register; } //usar $datos Ahí tendrí схвати в $datos все линии в форме array ассоциативно. – A. Cedano 08.11.2019, 15:20