2009-07-16 5 views
-2
function saveFile($catId,$docuTitle,$linkTitle) { 

$result = mysql_query("INSERT INTO categories (cd_title, cd_link) 
         VALUES ('$docuTitle','$linkTitle') WHERE c_name = '$catID'");  

      return 'yes'; 

     } 

Je souhaite insérer le titre du CD et les liens du CD en fonction de la catégorie sélectionnée.Obtention d'une erreur dans cette requête

+1

Quelle est l'erreur? Pouvons-nous obtenir un schéma de base de données? Vos paramètres de fonction contiennent-ils des guillemets simples? –

+1

oh s'il vous plaît dites-moi que c'est une chose de type test et que vous n'avez pas réellement exécutable sql à partir de votre page Web via cette fonction mysql_query() – jlarson

+1

Un 'WHERE' dans une instruction d'insertion sans jointures n'a aucun sens . –

Répondre

2

Editer: Scott Saunders a raison, vous ne pouvez pas avoir une instruction WHERE dans une requête INSERT.

Réponse d'origine: Vous devriez donner plus d'informations sur l'erreur, mais vous avez probablement une simple citation (') dans les variables $ docuTitle ou $ linkTitle, ce qui entraîne une requête malformée. Vous devriez échapper ces variables, ainsi que $ catId, avec mysql_real_escape_string() avant de les utiliser dans les requêtes, sinon votre application sera vulnérable à l'injection SQL.

Vous devriez lire quelques docs sur PDO, c'est un excellent outil pour éviter ce genre d'erreurs dans les requêtes SQL, et ça aide beaucoup pour l'évolutivité et la maintenabilité.

+0

+1 pour PDO [+1 je dis!] –

2

Vous voulez probablement:

INSERT INTO categories (cd_title, cd_link, c_name) VALUES ('$docuTitle','$linkTitle', '$catID') 

À moins que vous mettre à jour les lignes existantes, puis changer 'INSERT INTO' à 'MISE À JOUR'

+0

jea INSERT et O WH dans la même déclaration n'a aucun sens – Flo

1

vous combinez une instruction INSERT et une instruction UPDATE.

Vous devez choisir la syntaxe correcte:

INSERT INTO [TABLE] [COLUMNS] VALUES [VALUES] 

UPDATE [TABLE] SET [COLUMNS] = [VALUE] WHERE [where clause]