2010-04-11 5 views

Répondre

3

votre clause WHERE est mauvaise, vous n'écrivez pas WHERE a=1, b=2, c=3 vous voulez WHERE a=1 AND b=2 AND c=3

plus votre logique est erronée, parce que votre clause WHERE serait habituellement quelque chose comme WHERE id = x (à au moment où vous mettez à jour une ligne dans un tableau, où les données de ligne sont déjà les mêmes que celles que vous avez mises à jour -)?

De plus, apprenez à échapper à votre SQL cordes correctement ou vous vous laissez vulnérables à sql injection

1

En plus du problème expliqué par oedo, vous avez également de graves problèmes d'injection SQL. Vous devez utiliser mysql_real_escape_string pour coder les chaînes à insérer dans une instruction SQL, et non htmlspecialchars. Ou utilisez des requêtes paramétrées.

htmlspecialchars() est pour le texte d'encodage HTML juste avant que vous le sorti dans une page HTML. Vous ne devriez pas encoder les chaînes HTML pour le stockage dans la base de données.

0

Premièrement, n'avez-vous pas d'identifiant unique pour vos utilisateurs? Peut-être un client-ID d'une sorte? Vous pouvez l'utiliser pour identifier le client dans la clause WHERE afin de rendre votre SQL plus clair.

Deuxièmement, vous attendez que votre utilisateur à écrire toute la société exactement comme il est dans la base de données? Parce que c'est ce que vous attendez d'eux avec votre design actuel.

+0

J'ai 3 db.Dans deuxième db, j'ai id de cus.J'ai forme de 11 rouleaux, que vous auriez vu.in, ceci si je change 11 valeurs il devrait être mis à jour.Thnx pour aider.Plz crt mon code source. –

0

Vous devez identifier l'enregistrement à l'aide d'un ID, et non des valeurs de champ. Si vous regardez beaucoup de sites Web, ils envoient généralement l'ID pour identifier un enregistrement. Comme edit.php? Id = 1284, ou view.php? Id = 1284, etc.

En bref, vous aurez un formulaire que vous remplissez avec les valeurs qui sont dans la base de données pour cet ID d'enregistrement. Si vous modifiez, vous écrivez une requête d'édition comme:

$UpdateQuery = "UPDATE customer SET name = '" . $name . "', address = '" . $address . "' ....... WHERE id = " . intval($_GET['id']); 

La raison pour laquelle j'ajouter intval est parce que cela ne permettra des valeurs numériques de passer à travers. Comme le fait Bobince, surveillez les injections SQL et laissez mysql_real_escape_string passer toutes les valeurs de chaîne que vous entrez dans la requête.

Questions connexes