2017-08-11 1 views
0

Je dois extraire les noms d'histoire de ma table de base de données (histoire), les changer en format convivial (Game of Thrones -> jeu-de-trônes) et les insérer dans une autre colonne dans la même table (story.permalink). Y at-il un bon moyen de le faire? Ma fonction php actuelle que j'exécute à partir du terminal mac ne fonctionne pas.Comment puis-je extraire des enregistrements de la base de données, les ajuster et les insérer dans une autre colonne?

$conn = update_dao_connect(); 
$get_stmt = $conn->prepare("select id, name from story"); 
$update_stmt = $conn->prepare("update story set permalink=? where id=?"); 
$update_stmt->bind_param("si", $permalink, $id); 
if($get_stmt->execute()){ 
    $get_stmt->bind_result($id, $name); 
    while($get_stmt->fetch()){ 
     $permalink = generate_story_permalink($name); 
     if(!$update_stmt->execute()){ 
      error_log("update permalink failed for kamp id: ".$id.", name: ".$name.", permalink: ".$permalink); 
     } 
    } 
} 
else { 
    error_log("execute get all story for copy_story_names_to_permalinks fail"); 
} 
sortie terminal

(pour tous les enregistrements dans la base):
permalien mise à jour a échoué pour id histoire: 198, nom: histoire de financement Cercle, permalien: financement-cercles histoire
permalien mise à jour a échoué pour id histoire: 199, nom: Rentah, permalien: rentah-1
mise à jour permalien échoué pour l'histoire id: 200, nom: Kano informatique, permalien: kano-informatique
mise à jour permalien échoué pour l'histoire id: 201, nom: Outplacement, permalien: outplacement -1

Je vous remercie n avance!

+0

Si vous n'êtes pas en mesure d'exécuter, vous devez également enregistrer la valeur renvoyée par ['mysqli_stmt_error()'] (http://php.net/manual/fr/mysqli-stmt.error .php) – Qirel

+0

Merci, j'ai ajouté error_log ($ conn-> error) après la ligne if (! $ update_stmt-> execute()) {line et ça m'a donné: "Les commandes sont désynchronisées, vous ne pouvez pas lancer cette commande maintenant " –

+0

Cela signifie que vous (probablement) devez fermer l'instruction précédente avant d'en exécuter une nouvelle. – Qirel

Répondre