Visualizzazione risultati 1 fino 3 di 3

Discussione: Codice php va in errore quando scrive sul db riprendo dal precedente

  1. #1
    leonardomoretti non è connesso Utente giovane
    Data registrazione
    22-07-2020
    Messaggi
    37

    Predefinito Codice php va in errore quando scrive sul db riprendo dal precedente

    Buongiorno,
    ho fatto innumerevoli prove con tutti i codici che mi avevate suggerito, sono arrivato a questo:
    Codice PHP:
    <?php
    /*mysqli e pdo library*/

    error_reporting(E_ALL);

    $USERNAME = "leonardomoretti";
    $PASSWORD = null;
    $DBSERVER= "localhost";
    $DBNAME = "my_leonardomoretti";

    if(!(
    $db_connection = new mysqli($DBSERVER, $USERNAME, $PASSWORD, $DBNAME)))
    die(
    'Connect Error (' . $db_connection->connect_errno . ') '. $db_connection->connect_error);

    if(!(
    $db_selection = $db_connection->select_db($DBNAME)))
    die (
    "Errore nella selezione del DB.");


    $vdata= $_REQUEST['data'];

    $string = explode(',',$vdata); /*SEPARA IN PARORE LA STRINGA INTERA SEPARATA DAL CARATTERE "," E LE METTE NEL VETTORE */

    date_default_timezone_set('Europe/Warsaw');
    $date=date ("Y-m-d");


    $time=date("H:i:s");
    /*$progressive=(int)$string[0];*/
    $device=$string[0];
    $data1=$string[1];
    $data2=$string[2];


    // Inserisce i dati nella base di dati
    $query =("INSERT INTO MEASUREMENTS (DATA, TIME, DEVICE, DATA1, DATA2) VALUES (?, ?, ?, ?, ?)");

    if ((
    $stmt = $db_connection->prepare($query)) === false) {
    echo
    "0 Rows inserite.\n";
    die(
    "ERROR: Could not to prepare $query. " . $db_connection->error);
    }

    if (
    $test =$stmt->bind_param("iisss", $date, $time, $device, $data1, $data2) === false) {
    echo
    "0 Rows inserite.\n";
    die(
    "ERROR: Could not bind params: $date, $time, $device, $data1, $data2. " . $db_connection->error);
    }

    var_dump($test, $date, $time, $device, $data1, $data2);
    if (
    $stmt->execute() === false) {
    echo
    "0 Rows inserite.\n";
    die(
    "ERROR: Could not bind execute query. " . $db_connection->error);
    }
    echo
    "1 Row inserite.\n";
    echo
    "Records inserted successfully.";
    $stmt->close();

    $db_connection->close();
    ?>
    Che rilascia il seguente errore:
    bool(false) string(10) "2020-08-05" string(8) "13:12:44" string(8) "DEVICE01" string(4) "30.0" string(2) "55" 0 Rows inserite. ERROR: Could not bind execute query. Incorrect date value: '2020' for column 'DATA' at row 1
    però non riesco a capire questo errore: Incorrect date value: '2020' for column 'DATA' at row 1
    perché sono sicuro che la seguente riga $date=date ("Y-m-d"); mi rilascia solo la data nel formato giusto (anno-mese-giorno) che la vuole il DB.
    Perché LA COLONNA 'DATA' ha valore 2020, quando controllando il contenuto della variabile data con echo mi da la data odierna con tutti i valori (giorno,mese,anno) ?
    Grazie.

  2. #2
    darbula non è connesso AlterGuru 2500
    Data registrazione
    24-04-2011
    Messaggi
    2,894

    Predefinito

    La variabile $date si limita YYYY-MM-DD.
    Ti sta solo segnalando che si aspetta un valore intero ma trova una stringa e nell'errore mostrerà la stringa parziale.
    Comunque per DATA e TIME devi usare string in bind_param cioè cambia i in s e per i double cambia s in d.
    Occorrerebbe anche il var_dump($data1,$data2); con il float originale (originariamente il tuo script convertiva in float) in modo da capire che valore effettivamente è.
    Ultima modifica di darbula : 05-08-2020 alle ore 17.16.59

  3. #3
    leonardomoretti non è connesso Utente giovane
    Data registrazione
    22-07-2020
    Messaggi
    37

Regole di scrittura

  • Non puoi creare nuove discussioni
  • Non puoi rispondere ai messaggi
  • Non puoi inserire allegati.
  • Non puoi modificare i tuoi messaggi
  •