nome file che contiene punto passato come parametro a query

AndreaCerre

Utente Attivo
7 Giu 2020
55
0
6
Ciao,

ho un problema devo eseguire la query sottostante passano il nome del file con la variabile $userfile_name.
Il problema è che il nome del file contiene il carattere "." e suppongo che questo dia origine ad un errore nella query

Il file ha nome ad esempio AAA.2101

l'errore

Codice:
$userfile_name = $_FILES['bir']['name'];

$qfileinseriti = $mysqli -> query("SELECT NOMFILE FROM tbfile WHERE NOMFILE = " .$userfile_name. ";");

$rfileins = mysqli_fetch_array($qfileinseriti);

$rowcount=mysqli_num_rows($qfileinseriti);

echo $rowcount;
 
PHP:
$userfile_name = $_FILES['bir']['name'];

If(($qfileinseriti = $mysqli -> query("SELECT NOMFILE FROM tbfile WHERE NOMFILE = '$userfile_name'")) !== false){
if(is_object($qfileinseriti)) {
$rfileins = mysqli_fetch_assoc($qfileinseriti);

$rowcount=mysqli_num_rows($qfileinseriti);
echo $rowcount;
} else {
echo 'empty';
}
} elseif($qfileinseriti == false) {
printf("Error message: %s\n", mysqli_error($mysqli));
}
Se il valore stringa è racchiuso in apici singoli ti funziona?
EDIT: sostituito con mysqli_fetch_row($qfileinseriti)
EDIT2: anche con mysqli_fetch_assoc($qfileinseriti) funziona.
In ogni caso una stringa letterale deve almeno essere racchiusa da apici singolo.
 
Ultima modifica:
Salve ragazzi il problema sono gli apici ho provato e funziona. il problema potrebbe esserci in lettura perché essendo contenuto un punto e poi un'altra porzione di nome del file la quale potrebbe essere letta come un estensione ovviamente non valida.
 
Quindi come mi devo comportare con il parametro userfile_name, come posso trattarlo per farlo leggere correttamente?
 
Perché viene creato in automatico da un altro sistema
Benissimo ma non puoi riscriverlo prima di passarlo al database per cui successivamente andrà a letto come tale? Chiaramente anche nella folder andrà copiato con il nuovo nome. Puoi postare un esempio del nome del file?
 
Si posso usare questo metodo per ovviare alla scrittura/lettura nel db.

Ma il problema mi si ripropone quando voglio utilizzare la funzione filectime (userfile_name) per recuperarne la data di creazione
 
Si posso usare questo metodo per ovviare alla scrittura/lettura nel db.

Ma il problema mi si ripropone quando voglio utilizzare la funzione filectime (userfile_name) per recuperarne la data di creazione
Se nel nome del file c'è un filectime non devi riscriverlo con una nuova data, raccogli semplicemente il nome del file esplodi il punto metti insieme l'informazione 0 e l'informazione 1 e ottieni il nome del file senza il punto conservando il filectime. Ovviamente in questo caso avrai a che fare anche con il punto dell'estensione ma se posti il codice è meglio. AAA.2101: aaa sarebbe il filectime?
 
Ultima modifica:
Appunto forse non hai letto tutta la discussione avevo già risposto che con my SQL era tutto ok il problema è quindi il punto ma in fase di lettura.
Avevo dato per scontato lettura mysql, scusami.
Invece di fare giri semplicemente utilizza mysqli_fetch_row dal momento che nella sua query recupera un singolo dato
 
riprovato seguendo i vari metodi ma niente da fare,
ho fatto prova su mysql per vedere se la query funzionava e non funziona,
da empty set come risultato
 

Allegati

  • imweb1.jpg
    imweb1.jpg
    77,6 KB · Visite: 378
riprovato seguendo i vari metodi ma niente da fare,
ho fatto prova su mysql per vedere se la query funzionava e non funziona,
da empty set come risultato
Andrea fai una cosa posta tutto il codice anche con i parametri della tabella in modo tale che possiamo cercare di aiutarti ok?
 
Concordo oltretutto dimmi se vuoi recuperare il testo archiviato o un file di mysql io penso vuoi recuperare un file ma la sintassi è sbagliata.
 
questo il codice, voglio recuperare il nome completo del file per verificare se già presente nella tabella

Codice:
<?php
set_time_limit(120);
include ("config_prova.php");


$mysqli = new mysqli ($host, $db_user, $db_psw, $db_name);

if(!$mysqli)
    {
    die ("Errore critico di connessione al database" . mysqli_error());     
    }

//print_r($_FILES); //stampa i dettagli del file <br>
$userfile_name = $_FILES['birdfn']['name'];
echo $userfile_name = $_FILES['birdfn']['name'];
echo "\n<hr>\n\n";


$qfileinseriti = $mysqli -> query('SELECT NOMFILE FROM tbfilebirdfn WHERE NOMFILE = '.$userfile_name.';');
$rfileins = mysqli_fetch_row($qfileinseriti);

$rowcount=mysqli_num_rows($qfileinseriti);

echo $rowcount;

?>
 

Discussioni simili