Surround chaîne avec des citations
Est-il une fonction en PHP qui ajoute des guillemets à une chaîne de caractères?
comme "'".str."'"
C'est pour une requête sql avec varchars. J'ai cherché un peu, sans résultat...
Je ne les suivants:
$id = "NULL";
$company_name = $_POST['company_name'];
$country = $_POST['country'];
$chat_language = $_POST['chat_language'];
$contact_firstname = $_POST['contact_firstname'];
$contact_lastname = $_POST['contact_lastname'];
$email = $_POST['email'];
$tel_fix = $_POST['tel_fix'];
$tel_mob = $_POST['tel_mob'];
$address = $_POST['address'];
$rating = $_POST['rating'];
$company_name = "'".mysql_real_escape_string(stripslashes($company_name))."'";
$country = "'".mysql_real_escape_string(stripslashes($country))."'";
$chat_language = "'".mysql_real_escape_string(stripslashes($chat_language))."'";
$contact_firstname = "'".mysql_real_escape_string(stripslashes($contact_firstname))."'";
$contact_lastname = "'".mysql_real_escape_string(stripslashes($contact_lastname))."'";
$email = "'".mysql_real_escape_string(stripslashes($email))."'";
$tel_fix = "'".mysql_real_escape_string(stripslashes($tel_fix))."'";
$tel_mob = "'".mysql_real_escape_string(stripslashes($tel_mob))."'";
$address = "'".mysql_real_escape_string(stripslashes($address))."'";
$rating = mysql_real_escape_string(stripslashes($rating));
$array = array($id, $company_name, $country, $chat_language, $contact_firstname,
$contact_lastname, $email, $tel_fix, $tel_mob, $address, $rating);
$values = implode(", ", $array);
$query = "insert into COMPANIES values(".$values.");";
Général astuce: toujours le nom de chaque colonne que vous êtes à l'insertion de valeurs, avec juste de "l'insertion dans les SOCIÉTÉS de valeurs(".$des valeurs.")" votre requête ne fonctionnera plus si vous modifiez la structure de votre table, ou mettre les arguments dans le mauvais ordre, ou ne pas mettre assez d'arguments.
C'est une grande ressource pour les AOP : kitebird.com/articles/php-pdo.html . Et, je suis d'accord avec les autres posts ici que les instructions préparées sont, à tous égards une manière supérieure pour mettre ensemble une requête.
N'utilisez pas de
C'est une grande ressource pour les AOP : kitebird.com/articles/php-pdo.html . Et, je suis d'accord avec les autres posts ici que les instructions préparées sont, à tous égards une manière supérieure pour mettre ensemble une requête.
N'utilisez pas de
stripslashes()
sans vérifier magic quotes gpc réglage. Vous pouvez envelopper ce facilement personnalisé dans un get_string()
fonction.OriginalL'auteur serhio | 2010-02-21
Vous devez vous connecter pour publier un commentaire.
Tout d'abord, je vois que vous êtes en utilisant
stripslashes()
. Cela implique que vous avez magic quotes. Je suggère de tourner.Ce que vous voulez faire est de le mettre dans une fonction:
et puis:
De tout cela, cependant, est de réduire la quantité de texte standard que vous avez légèrement.
Certains ont suggéré d'utiliser PDO ou mysqli pour cela, de sorte que vous pouvez utiliser les requêtes préparées. Même s'ils peuvent être utiles, il est certainement pas nécessaire. Vous tentez de fuir les champs afin que les revendications de la vulnérabilité d'injection SQL (au moins dans le cas de ce code) sont erronées.
Enfin, je ne voudrais pas créer une requête de cette façon. Pour une chose, c'est en s'appuyant sur des colonnes dans la table sociétés de son type et de l'ordre. Il est de loin préférable d'être explicite à ce sujet. J'ai l'habitude de le faire:
Qui va suffire à la tâche. Bien sûr, vous pouvez étudier les utiliser mysqli ou PDO, mais il n'est pas nécessaire.
un peu de "non rempli" champ problème apparaît ici dans insérer
aValue, , otherValue
, mais fonctionneOriginalL'auteur cletus
Plutôt que d'insérer la valeur directement dans la requête, utilisez les requêtes préparées et des paramètres, qui ne sont pas vulnérables à L'injection SQL.
La création d'un objet PDO (qui se connecte également à la base de données et est donc une contrepartie à
mysql_connect
) est simple:Vous ne devriez pas vous disperser dans tous les scripts où vous voulez une connexion DB. Pour une chose, c'est plus d'un risque de sécurité. Pour une autre, votre code sera plus sensible aux fautes de frappe. La solution répond à la fois à des questions de: créer une fonction ou une méthode qui met en place la connexion DB. Par exemple:
Si vous travaillez avec un réseau de plus de deux ou trois éléments, vous devez utiliser des boucles ou des fonctions de tableau plutôt qu'une longue séquence de déclarations similaires, comme cela est fait dans l'exemple de code. Par exemple, la plupart de votre échantillon peut être remplacé par:
Voici un autre exemple complet de création d'une requête d'insertion. C'est loin d'être prêt pour la production, mais il illustre les principes de base.
Pour le rendre prêt pour la production, le code devrait être remaniée dans des fonctions ou des classes qui se cachent tout ce que la base de données connexes provenant du reste du code, ce qu'on appelle un "couche d'accès aux données". L'utilisation de
$fields
montre une façon d'écrire le code qui va travailler pour arbitraire des structures de table. Recherchez "Modèle-Vue-Contrôleur" architectures pour plus d'informations. Aussi, la validation doit être effectuée.Fatal error: Call to a member function prepare() on a non-object in..
avez-vous cliquez sur le lien dans le post? Que le bleu, texte qui dit déclarations préparées à l'avance?
oui bleu "text" 🙂 je suis novice en PHP, pas dans ce forum 🙂
lors de la connexion, j'obtiens:
Fatal error: Uncaught exception 'PDOException' with message 'SQLSTATE[HY000] [2005] Unknown MySQL server host 'localhost,dbname=mydbname'...
, cependant cela fonctionne avecmysql_connect($host, $username, $password)
...changer la virgule dans la source de données à des points-virgules (code a été mis à jour pour refléter cette). Cela montre la valeur de la lecture de la documentation (php.net/manual/en/ref.pdo-mysql.connection.php)
OriginalL'auteur outis
Pensé que je pourrais contribuer à une option qui répond à la question "Est-il une fonction en PHP qui ajoute des guillemets à une chaîne de caractères?" - oui, vous pouvez utilisation
str_pad()
, même si c'est probablement plus facile de le faire manuellement.Avantages de le faire avec cette fonction vous pouvez également passer d'un personnage à enrouler autour de la variable nativement dans PHP:
OriginalL'auteur Robbie Averill
Créer votre propre.
OriginalL'auteur Phoexo
Ne pas le faire. Au lieu d'utiliser des requêtes paramétrées, tels que ceux avec AOP.
outis la réponse va dans un peu de bas-niveau de détail.
OriginalL'auteur Ignacio Vazquez-Abrams
Ce n'est pas une fonction, mais c'est le premier post qui revient à google lorsque vous tapez "php envelopper chaîne de caractères entre guillemets". Si quelqu'un veut juste envelopper d'une chaîne existante entre guillemets, sans l'exécuter dans une fonction, d'abord, voici la syntaxe correcte:
OriginalL'auteur Brian Powell