2017-06-23 1 views
1

J'essaie d'exécuter une requête dans phpMyAdmin mais cela ne fonctionne pas en raison d'un problème avec les citations. Les valeurs de ma table spécifient des pouces, tels que 4 ", 6", etc. Ma requête définit un nombre à un champ basé sur la valeur de cette colonne de taille, mais elle ne s'exécute pas car dans le format actuel, elle pense les valeurs pour Les pouces sont des colonnes en raison de la citation unique.Exécution d'une instruction SQL avec un style de citation incorrect

Comment puis-je exécuter ce dans phpMyAdmin si toutes les valeurs ont déjà "à la fin de la valeur?

UPDATE `stagingSurvey` 
SET `totalCost` = 330 
WHERE `meterSize` = `3"` 
OR `meterSize` = `4"` 
OR `meterSize` = `5"` 
OR `meterSize` = `6"` 
OR `meterSize` = `7"` 
OR `meterSize` = `8"` 
OR `meterSize` = `9"` 
OR `meterSize` = `10"` 
OR `meterSize` = `11"` 
OR `meterSize` = `12"`; 

UPDATE `stagingSurvey` 
SET `totalCost` = 175 
WHERE `meterSize` = `5/8"` 
OR `meterSize` = `3/4"` 
OR `meterSize` = `1"` 
OR `meterSize` = `1 1/2"` 
OR `meterSize` = `2"`; 

Répondre

1

Vous ne pouvez pas utiliser des accents graves pour échapper aux valeurs de la colonne/valeurs de chaîne. Les contre-apostrophes ne sont valide pour échapper à des identifiants (comme les noms de colonnes et de table).

le caractère de protection des identifiants est le backtick (`). https://dev.mysql.com/doc/refman/5.7/en/identifiers.html

Dans votre cas, vous utilisez " dans des valeurs de chaîne de sorte que vous ne pouvez pas utiliser directement " pour échapper les valeurs de chaîne. Une solution simple serait d'utiliser ' au lieu de backticks.

Vous pouvez également utiliser " pour échapper les valeurs de chaîne, mais vous devez échapper les " sur les valeurs: \".

Une chaîne est une séquence d'octets ou de caractères, enfermés dans des guillemets simples (') ou des guillemets doubles (") caractères.
https://dev.mysql.com/doc/refman/5.7/en/string-literals.html

Dans votre cas, vous pouvez simplement utiliser ' à échapper les valeurs de chaîne:

UPDATE `stagingSurvey` 
SET `totalCost` = 330 
WHERE `meterSize` = '3"' 
    OR `meterSize` = '4"' 
    OR `meterSize` = '5"' 
    OR `meterSize` = '6"' 
    OR `meterSize` = '7"' 
    OR `meterSize` = '8"' 
    OR `meterSize` = '9"' 
    OR `meterSize` = '10"' 
    OR `meterSize` = '11"' 
    OR `meterSize` = '12"'; 

UPDATE `stagingSurvey` 
SET `totalCost` = 175 
WHERE `meterSize` = `5/8"` 
    OR `meterSize` = '3/4"' 
    OR `meterSize` = '1"' 
    OR `meterSize` = '1 1/2"' 
    OR `meterSize` = '2"'; 
+0

Ouais c'est ce que je viens de réaliser Jusqu'à présent, j'ai été en mesure d'utiliser des guillemets autour de mes valeurs, mais ces valeurs dans le tableau ont toutes une double citation af ter pour indiquer des pouces. Quelle serait la bonne façon d'entourer ces valeurs? –

+0

Pour clarifier, les chaînes doivent être délimitées avec '' 'non avec' \ ''. Une double guillemets dans une chaîne ''1' '' ne devrait pas causer de problème – Turophile

+0

Ah, merci beaucoup, je n'ai pas prêté attention au problème des guillemets/des guillemets. –