web-dev-qa-db-fra.com

Je reçois une erreur de fonction mysql_real_escape_string () lors de l'ajout de l'utilisateur?

J'ai écrit un code pour insérer un utilisateur wordpress si j'essaie d'ajouter un nouvel utilisateur, je reçois 3 erreurs d'avertissement disant comme ci-dessous:

"Attention: mysql_real_escape_string () s'attend à ce que le paramètre 1 soit une chaîne, un objet donné dans /home/intecom/public_html/app/wp-includes/wp-db.php à la ligne 1129",

"Avertissement: type de décalage illégal dans isset ou vide dans /home/intecom/public_html/app/wp-includes/cache.php à la ligne 725"

et

"Avertissement: array_key_exists (): le premier argument doit être une chaîne ou un entier dans /home/intecom/public_html/app/wp-includes/cache.php à la ligne 725".

mon code est ci-dessous:

  $first_name = 'my_firstname_value';
  $last_name = 'my_lastname_value';
  $trainer_email = '[email protected]';
  $course_registered = Array
                      (
                        [0] => 2410
                      );
  $pro_icon_status = '1';
  $this->institute_icon[0] = '1';
  $this->institute_name[0] = 'my_institute_name';
  $user_data = array(
                    'user_login' => $first_name,
                    'user_pass' => '',
                    'user_email' => $trainer_email,
                    'first_name' => $first_name,
                    'last_name' => $last_name,
                    'role' => 'trainer'
                );
                $random_password = wp_generate_password(8,false);
                $user_id = wp_insert_user( $user_data );

                update_user_meta( $user_id, 'course_registered',$course_registered );
                update_user_meta( $user_id, 'inistitute_name',$this->institute_name[0] );
                update_user_meta( $user_id, 'inistitute_icon',$this->institute_icon[0] );
                update_user_meta( $user_id, 'trainer_icon',$pro_icon_status );
                wp_set_password($random_password, $user_id);

Mon entrée est seulement soit une chaîne (ou) un tableau mais pourquoi il dit que "Iam passe un objet", je ne sais pas ce qui se passe. Ça me rend fou. quelqu'un peut-il me dire quelle est mon erreur? Merci d'avance.

Mise à jour: le problème ne vient pas de 'wp_insert_user' ni de 'update_user_meta', mais des données que je transmettais, c'est-à-dire que je donne le même nom d'utilisateur que le nom d'utilisateur qui se trouve déjà dans la base de données. L'objet WP_Error que je reçois est identique à celui-ci:

  WP_Error Object
  (
    [errors] => Array
    (
        [existing_user_login] => Array
            (
                [0] => Sorry, that username already exists!
            )

    )

    [error_data] => Array
                  (
                  )

    ) 

Maintenant, pouvez-vous me dire comment montrer cette erreur à l'utilisateur au début?

1
Prasad Patel

Le problème vient de wp_insert_user et du fait que votre valeur pour user_pass est vide.

Vous devriez mettre à jour votre code comme tel

 $random_password = wp_generate_password(8,false);
 $user_data = array(
                'user_login' => $first_name,
                'user_pass' => $random_password,
                'user_email' => $trainer_email,
                'first_name' => $first_name,
                'last_name' => $last_name,
                'role' => 'trainer'
            );

Et supprimez cette ligne wp_set_password($random_password, $user_id);

Vous devez également vérifier la valeur de votre $user_id pour vous assurer qu'il ne renvoie pas de WP_Error object. Vous pouvez utiliser var_dump($user_id').

0
Tunji

vous ne pouvez pas utiliser mysql_real_escape_string () sans un lien établi avec mysql. Vous avez utilisé la fonction mysql_real_escape_string () avant de vous connecter à mysql.

0
Khuram

Bonjour, vous devez procéder au débogage de votre code en vous assurant que toutes les variables transmises à update_user_meta() sont des chaînes ou des tableaux et non des objets.

DU CODEX

La nouvelle valeur souhaitée de la méta_key, qui doit être différente de la valeur existante. Les tableaux et les objets seront automatiquement sérialisés. Notez que l'utilisation d'objets peut causer ce bogue à apparaître.

0
Tunji