Frage

I haben eine Funktion, die einen vorbereiteten INSERT-Anweisung basierend auf einer assoziativen Matrix von Spaltennamen und Werte erzeugt in dieser Spalte und einen Tabellennamen eingefügt werden (eine einfache string):

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;
    }

Mein Problem ist, dass $ this-> conn-> prepare (es ist Teil einer Klasse, anschl ist ein neues mysqli-Objekt, das ohne Probleme funktioniert) gibt false zurück, aber nicht geben Sie mir einen Grund, warum!

Hier ist ein Beispiel $ sqlString, die für die Vorbereitung Anweisung erstellt werden:

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

Kann jemand ein Problem mit dieser parametrisierte Anweisung sehen? Gibt es Gründe, die Vorbereitung Funktion zurückkehren würde falsch?

War es hilfreich?

Lösung

Ich bin Kopieren Sie die Lösung in diese Antwort so dies eine upvote gegeben werden kann, da sonst die Frage in den „offenen Fragen“ erscheint für immer. Ich Kennzeichnung diese Antwort CW, damit ich keine Punkte bekommen.

@ Andrew E. sagt:

  

Ich drehte gerade auf   mysqli_report(MYSQLI_REPORT_ALL) zu   ein besseres Verständnis von dem, was   los - stellt sich heraus, dass einer meiner   Feldnamen falsch war - du würdest   denken, dass prepare() ein werfen würde   Ausnahme, aber es funktioniert nicht still.

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top