Question

J'ai une fonction qui génère une instruction INSERT préparée basée sur un tableau associatif de noms de colonnes et de valeurs à insérer dans cette colonne, ainsi qu'un nom de table (chaîne simple):

function insert ($param, $table) {
        $sqlString = "INSERT INTO $table (".implode(', ',array_keys($param)).') VALUES ('.str_repeat('?, ', (count($param) - 1)).'?)';
        if ($statement = $this->conn->prepare($sqlString)):
            $parameters = array_merge(array($this->bindParams($param), $param));
            call_user_func_array(array($statement, 'bind_param', $parameters));
            if (!$statement->execute()):
                die('Error! '.$statement->error());
            endif;
            $statement->close();
            return true;
        else:
            die("Could Not Run Statement");
        endif;
    }

Mon problème est que $ this- > conn- > prepare (cela fait partie d'une classe, conn est un NOUVEAU objet mysqli, qui fonctionne sans aucun problème) renvoie false, mais ne me donne pas de raison.!

Voici un exemple de $ sqlString construit pour l'instruction de préparation:

INSERT INTO students (PhoneNumber, FirstName, MiddleInit, LastName, Email, Password, SignupType, Active, SignupDate) VALUES (?, ?, ?, ?, ?, ?, ?, ?, ?)

Quelqu'un peut-il voir un problème avec cette instruction paramétrée? Une raison quelconque pour laquelle la fonction de préparation renvoie la valeur false?

Était-ce utile?

La solution

Je copie la solution dans cette réponse afin de donner un vote positif, sinon la question apparaîtra dans la rubrique "questions non résolues". pour toujours. Je marque cette réponse CW pour ne pas avoir de points.

@Andrew E. a déclaré:

  

Je viens d'allumer    mysqli_report (MYSQLI_REPORT_ALL) à   mieux comprendre ce qui était   passe - se trouve que l'un de mes   les noms de champs étaient incorrects - vous   pense que prepare () jetterait un   exception, mais elle échoue silencieusement.

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top