2010-12-09 5 views
1

Je voudrais savoir si je suis en train d'écrire correctement une table, cela semble être un échec. Sachez que la dernière partie est mal découpée et que j'ai besoin d'aide.Insertion de la table MySQL

+0

1. Pouvez-vous envoyer l'erreur que vous obtenez? 2. Avertissement d'injection SQL obligatoire - utiliser les paramètres 3. Votre vérification d'unicité pour la correspondance des chaînes aléatoires semble redondante - qu'essayez-vous d'accomplir avec elle? – InSane

+0

Il doit être complètement unique, il continuera à régénérer les chaînes aléatoires s'il y a une correspondance. –

+0

cette logique est susceptible d'échouer dans un scénario multi-utilisateur, sauf si vous avez une contrainte sur la colonne DB - auquel cas - je considérerais cette vérification ici redondante. – InSane

Répondre

1

Il semble que des délimiteurs de chaîne manquent dans votre instruction d'insertion.

I.e.

$temp = mysql_query("INSERT INTO streamer_ids (username,streamer_id,premium) VALUES('".$username."','".$randstring."','0')");

De plus, je ne sais pas où la valeur de $ username vient, mais vous devriez probablement le désinfecter afin d'éviter les injections SQL. C'est à dire. Courir addslashes à ce sujet.

  • Christian
+0

J'ai décidé d'utiliser simplement: \t \t $ temp = mysql_query ("INSERT INTO streamer_ids (nom d'utilisateur, streamer_id, premium) VALEURS ($ username, $ randstring, 0 ')"); \t \t $ temp-> closeCurseur(); –

0

vous pouvez mettre votre logique d'insertion dans le cas ROW_COUNT> 0 clauses, vous obtenez également des erreurs parce que vous générez requête en utilisant la concaténation de chaîne, pas de paramètres. Utilisez les paramètres et cela fonctionnera =) Votre code actuel est tout simplement dangereux.

Votre instruction select * peut également être remplacée par select count (*), ce qui rendra votre logique plus claire car vous ne demanderez que les données requises de db, dans ce cas, qu'il y ait des lignes ou non.

Questions connexes