2013-08-05 3 views
0

J'exécute une requête de mise à jour dans mon script. Il renvoie true mais la requête de mise à jour ne met pas à jour la table. Voici la requête. Qu'est-ce que je manque ici?requête de mise à jour ne mettant pas à jour la table

$connection = db::factory('mysql'); 
$query='update bookings SET date="'.$date.'",time_from="'.$time_from.'",time_to="'.$time_to.'",status="'.$status.'" where booker_id="'.$booker_id.'"'; 
if(mysql_query($query)) { 
    echo "success"; exit; 
    return true; 
} else { 
    echo "fail"; exit; 
    return false; 
} 

Voici la structure de la table

CREATE TABLE IF NOT EXISTS `bookings` (
    `id` int(11) NOT NULL AUTO_INCREMENT, 
    `date` date NOT NULL, 
    `time_from` time NOT NULL, 
    `time_to` time NOT NULL, 
    `status` varchar(250) NOT NULL, 
    `booker_id` int(11) NOT NULL, 
    PRIMARY KEY (`id`) 
) ENGINE=MyISAM DEFAULT CHARSET=latin1 AUTO_INCREMENT=20 ; 
+2

Veuillez indiquer la chaîne de requête résultante et la structure de votre table. –

+2

Vous devriez regarder dans PDO ou MySQLi avec des instructions préparées car les fonctions mysql_ ont été abandonnées. – Fredd

+0

N'utilisez pas le mysql_ * utilisez le mysqli_ * ou le PDO. –

Répondre

0

quelle est la valeur de $booker_id, car je soupçonne qu'il est mis à jour avec succès mais ne correspond pas réellement aux enregistrements. imprimer $query et voir exactement ce qui est envoyé à la db

0

Essayez ceci:

$query='update `bookings` SET `date`="'.$date.'",`time_from`="'.$time_from.'",`time_to`="'.$time_to.'",`status`="'.$status.'" where `booker_id`="'.$booker_id.'"'; 


    $rs = mysql_query($query) or die(mysql_error()); 

    if($rs) { 
     echo "success"; exit; 
     return true; 
    } else { 
     echo "fail"; exit; 
     return false; 
    } 

espère que cela vous aidera

+0

Nope .. Il n'a pas travaillé –

+0

s'il vous plaît echo la requête ci-dessus et vérifiez la valeur obtient ou pas –

0

Et le `jusqu'à ce que le nom de la colonne que vous avez nom date colonne et la date est un type de données de colonne et de clavettes réservées dans mysql utilisez ceci:

$query='update `bookings` SET `date`="'.$date.'",`time_from`="'.$time_from.'",`time_to`="'.$time_to.'",`status`="'.$status.'" where `booker_id`="'.$booker_id.'"'; 
0

Il retourne vrai car il n'y avait pas d'erreur.
Mais Mysql n'a trouvé aucune entrée à mettre à jour, car aucune ne correspond à vos conditions.
Vous devriez retourner toute la requête pour la vérifier, et essayer de l'exécuter manuellement avec phpMyAdmin.
+1 pour la colonne `autour de la date.

0

mysql_query() renvoie juste vrai que la requête s'exécute avec succès. Je recommande d'obtenir le nombre de lignes mises à jour/modifiées pour vérifier si cette requête a mis à jour une ligne ou non. Donc, utilisez mysql_affected_rows() immédiatement après l'exécution de la requête de mise à jour. Remarque: les requêtes mysql_ * sont supprimées, donc Essayez d'utiliser l'une des PDO, mysqli

Questions connexes