Besoin d'aide mise à jour PHP de 7 vers 8.1, script ne fonctionne plus
Posté : 20 déc. 2023, 22:12
Bonjour,
J'ai créé un code pour transformer des informations JSON en requête afin de remplir ma base de donnée.
Sur PHP 7.00, ça fonctionnait parfaitement, mais maintenant j'ai un beau message d'erreur ( Fatal error: Uncaught TypeError: implode(): Argument #1 ($pieces) must be of type array, string given in /home/yehdjdnu/test/import.php:54 Stack trace: #0 /home/yehdjdnu/test/import.php(54): implode() #1 {main} thrown in /home/yehdjdnu/test/import.php on line 54)
Auriez vous une idée du soucis ?
Merci d'avance,
Voici le code :
J'ai créé un code pour transformer des informations JSON en requête afin de remplir ma base de donnée.
Sur PHP 7.00, ça fonctionnait parfaitement, mais maintenant j'ai un beau message d'erreur ( Fatal error: Uncaught TypeError: implode(): Argument #1 ($pieces) must be of type array, string given in /home/yehdjdnu/test/import.php:54 Stack trace: #0 /home/yehdjdnu/test/import.php(54): implode() #1 {main} thrown in /home/yehdjdnu/test/import.php on line 54)
Auriez vous une idée du soucis ?
Merci d'avance,
Voici le code :
Code : Tout sélectionner
<?php
error_reporting(E_ALL);
ini_set('display_errors', 1);
// Fonction pour échapper les données
function escapeData($conn, $data)
{
if ($data === null) {
return null;
}
return $conn->real_escape_string($data);
}
// Vérifiez si un fichier a été téléchargé
if ($_FILES['jsonFile']['error'] == 0) {
$jsonContent = file_get_contents($_FILES['jsonFile']['tmp_name']);
$jsonData = json_decode($jsonContent, true);
if ($jsonData !== null) {
// Connexion à la base de données (utilisez les informations de connexion de votre base de données)
$conn = new mysqli('localhost', 'XXXX', 'XXXX', 'XXXX');
// Vérifiez la connexion
if ($conn->connect_error) {
die('Erreur de connexion à la base de données : ' . $conn->connect_error);
}
// Préparez la requête SQL pour l'insertion
$sql = "INSERT INTO votre_table (
positionName, salary, jobType, company, location, rating, reviewsCount, url, id, postedAt,
scrapedAt, postingDateParsed, description, descriptionHTML, externalApplyLink, searchInputposition,
searchInputcountry, companyInfoindeedUrl, companyInfourl, companyInfocompanyDescription,
companyInforating, companyInforeviewCount, companyInfocompanyLogo, jobType1, jobType2, jobType3, jobType4,
jobType5, jobType6, companyInforewordlyUrl
) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?, ?)";
// Affichez la requête SQL
echo 'Requête SQL : ' . $sql . '<br>';
// Préparez la déclaration
$stmt = $conn->prepare($sql);
// Vérifiez si la préparation de la requête a réussi
if ($stmt === false) {
die('Erreur de préparation de la requête : ' . $conn->error);
}
// Boucle à travers les données JSON et ajoutez-les à la base de données
foreach ($jsonData as $data) {
// Échappez les données avant de les utiliser dans la requête SQL
$positionName = escapeData($conn, $data['positionName']);
$salary = escapeData($conn, $data['salary']);
$jobType = escapeData($conn, implode(',', $data['jobType']));
$company = escapeData($conn, $data['company']);
$location = escapeData($conn, $data['location']);
$rating = escapeData($conn, $data['rating']);
$reviewsCount = escapeData($conn, $data['reviewsCount']);
$url = escapeData($conn, $data['url']);
$id = escapeData($conn, $data['id']);
$postedAt = escapeData($conn, $data['postedAt']);
$scrapedAt = escapeData($conn, $data['scrapedAt']);
$postingDateParsed = escapeData($conn, $data['postingDateParsed']);
$description = escapeData($conn, $data['description']);
$descriptionHTML = escapeData($conn, $data['descriptionHTML']);
$externalApplyLink = escapeData($conn, $data['externalApplyLink']);
$searchInputposition = escapeData($conn, $data['searchInput']['position']);
$searchInputcountry = escapeData($conn, $data['searchInput']['country']);
$companyInfoindeedUrl = escapeData($conn, $data['companyInfo']['indeedUrl']);
$companyInfourl = escapeData($conn, $data['companyInfo']['url']);
$companyInfocompanyDescription = escapeData($conn, $data['companyInfo']['companyDescription']);
$companyInforating = escapeData($conn, $data['companyInfo']['rating']);
$companyInforeviewCount = escapeData($conn, $data['companyInfo']['reviewCount']);
$companyInfocompanyLogo = escapeData($conn, $data['companyInfo']['companyLogo']);
// Affichez les valeurs échappées
echo 'Valeurs échappées : ' . implode(', ', [$positionName, $salary, $jobType, $company, $location, $rating, $reviewsCount, $url, $id, $postedAt, $scrapedAt, $postingDateParsed, $description, $descriptionHTML, $externalApplyLink, $searchInputposition, $searchInputcountry, $companyInfoindeedUrl, $companyInfourl, $companyInfocompanyDescription, $companyInforating, $companyInforeviewCount, $companyInfocompanyLogo]);
// Définissez le paramètre jobType1 sur NULL
$stmt->bind_param('ssssssssssssssssssssssssssssss', $positionName, $salary, $jobType, $company, $location, $rating, $reviewsCount, $url, $id, $postedAt, $scrapedAt, $postingDateParsed, $description, $descriptionHTML, $externalApplyLink, $searchInputposition, $searchInputcountry, $companyInfoindeedUrl, $companyInfourl, $companyInfocompanyDescription, $companyInforating, $companyInforeviewCount, $companyInfocompanyLogo, $jobType1, $jobType2, $jobType3, $jobType4, $jobType5, $jobType6, $companyInforewordlyUrl);
// Exécutez la requête SQL pour ajouter les données
$stmt->execute();
}
// Fermez la déclaration et la connexion à la base de données
$stmt->close();
$conn->close();
echo 'Données importées avec succès !';
} else {
echo 'Erreur lors du décryptage du fichier JSON.';
}
} else {
echo 'Erreur lors du téléchargement du fichier.';
}
?>