2017-09-28 2 views
-3

J'ai une erreur dans ce quand je télécharge les données du fichier .csv d'un autre fichier php, et mon erreur est: - "Vous avez un erreur dans votre syntaxe SQL, consultez le manuel qui correspond à votre version du serveur MariaDB pour la bonne syntaxe à utiliser près "Vous avez une erreur dans votre syntaxe SQL; vérifier le manuel qui correspond à votre version du serveur MariaDB pour la bonne syntaxe à utiliser près de

function array_to_sql($queryData , $table , $multiple = true){ 

// Create connection 
$conn = new mysqli("localhost","root", "", "mydata"); 
// Check connection 
if ($conn->connect_error) { 
die("Connection failed: " . $conn->connect_error); 
} 

    //If multiple data 
else 
{ 
    foreach($queryData as $queryEntry) 
    { 
      if (count($queryEntry) > 0) { 
       foreach ($queryEntry as $key => $value) { 
        $value = "'$value'"; 
        $updates[] = "$key = $value"; 
       } 
      } 

      $implodeArray = implode(', ', $updates); 
     //print_r($updates); 
     $sql = "INSERT INTO `$table` (`".implode("` , `",array_keys($queryEntry))."`) VALUES('".implode("' , '",array_values($queryEntry))."') ON DUPLICATE KEY UPDATE $implodeArray"; 


     if ($conn->query($sql) === TRUE) { 
     echo "Request Updated"; 
     } else { 
      echo "Error: ". "<br>" . $conn->error . $sql; 
     } 
    }     
    }  
} 
?> 

Répondre

0

vos champs CSV contiennent des espaces, qui ne sont pas autorisés pour les noms de champ MySQL.

Vous devez manipuler $key ou le mettre entre guillemets tout comme

 if (count($queryEntry) > 0) { 
      foreach ($queryEntry as $key => $value) { 
       $key='`'.$key.'`'; 
       $value = "'$value'"; 
       $updates[] = "$key = $value"; 
      } 
     } 
+0

pouvez-vous wirte cela? – Rijwandeltax

+0

mon problème est résolu. – Rijwandeltax

+0

De rien. Si cela répond à votre question, veuillez la marquer comme bonne réponse afin que les autres sachent –