Comportamento strano di questo script per caricamento file sql in database

  • Creatore Discussione Creatore Discussione migo80
  • Data di inizio Data di inizio

migo80

Utente Attivo
25 Apr 2013
243
3
18
Un buonasera a tutti, come da titolo, ho un comportamento strano del seguente script:

PHP:
<?php
 $sql = 'install/province.sql';
  $sql_content = file_get_contents($sql);
 $sql_re = str_replace('/*prefix*/', $prefix, $sql_content);
  $sql_rer = str_replace('/*database*/', $name_db, $sql_re);
 $sql_contents = explode(";", $sql_rer);
 
 foreach($sql_contents as $query){
        $result = $mysqli->query($query);
    if ($result){
          echo"dati caricati";
		}else{
			echo"Si sono verificati dei problemi.";
	 
 }    
 }

?>

Il problema è che anche se i dati vengono caricati correttamente, visualizzo entrambi i messaggi, come posso risolvere?
 
ciao, prova così e fammi sapere.

PHP:
<?php
$sql = 'install/province.sql';
$sql_content = file_get_contents($sql);
$sql_re = str_replace('/*prefix*/', $prefix, $sql_content);
$sql_rer = str_replace('/*database*/', $name_db, $sql_re);
$sql_contents = explode(";", $sql_rer);
foreach ($sql_contents as $query) {
  $result = $mysqli->query($query);
  if (is_null($result)) {
    echo "Si sono verificati dei problemi.";
  }
  if (! is_null($result)) {
    echo "dati caricati";
  }
}
?>
 
Ciao grazie per la risposta, ho provato la modifica ma ora compare solo il messaggio di avvenuto caricamento anche quando questo non avviene.
 
usando il tuo codice originale, ti propongo la sostituzione della riga di errore
per capire dove sbaglia e perché sbaglia la scrittura nel db, non lo script
PHP:
foreach($sql_contents as $query)
	{ 
	$result = $mysqli->query($query); 
	if ($result)
		{ 
		echo"dati caricati"; 
		}
	else
		{ 
		echo"ERRORE : ".$query;
		}
ciao
 
Ultima modifica:
l'errore non è nella scrittura sul database ma nel fatto che anche se i dati vengono caricati in modo corretto viene visualizzato sia il messaggio di ok e sia il messaggio di ko.
Mentre se i dati non vengono caricati il messaggio giusto di ko viene visualizzato.
 
PHP:
<?php
$sql = 'install/province.sql';
$sql_content = file_get_contents($sql);
$sql_re = str_replace('/*prefix*/', $prefix, $sql_content);
$sql_rer = str_replace('/*database*/', $name_db, $sql_re);
$sql_contents = explode(";", $sql_rer);
foreach ($sql_contents as $query) {
  $result = $mysqli->query($query);
  if($result !== false) {
    echo "Si sono verificati dei problemi.";
  }
  esle {
    echo "dati caricati";
  }
}
?>

Così dovrebbe funzionare da quello che c'è scritto nel manuale PHP.
 

Discussioni simili