exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid parameter number: Anzahl der gebundenen Variablen entspricht nicht Anzahl der Token
Vor dem Lesen: ich weiß die Tabelle ist zu komisch und zu lang, und es muss normiert werden; aber aus irgendeinem Grund ist meine Datenbank und ich sollte die Arbeit mit dieser Tabelle! Sorry!
Um es kurz halten:
Ich bin immer folgende exception:
exception 'PDOException' with message 'SQLSTATE[HY093]: Invalid
parameter Zahl: Anzahl der gebundenen Variablen entspricht nicht Anzahl der
Token' in C:\xampp\htdocs\FD\includes\helper.php:472 Stack trace:0 C:\xampp\htdocs\FD\includes\helper.php(472): PDOStatement->execute(Array) #1
C:\xampp\htdocs\FD\newHrForm.php(113):
helperFunctions::UpdateTableHrForms('112', 'dfsfdsfds',
'3123213', 'dfdsf', ", ", ", ", ", ", ", ", ", ", ",
'3213123213', '1', '3213123', '213123213', '3213213', '213123123',
) #2 {main}
und meine Funktion zum speichern von Daten ist wie folgt:
public static function UpdateTableHrForms(
$id,$dob_city,$dob_province,$dob_country,...)
{
$conn = new mysqlcon();
$conn->setAttribute(PDO::ATTR_ERRMODE, PDO::ERRMODE_EXCEPTION);
$query = "INSERT into `hr_forms` (`id`,`dob_city`,
`dob_province`,`dob_country`,...)
VALUES (:id,:dob_city,:dob_province,:dob_country,...)";
try {
if (helperFunctions::CheckidExistForms($id) == 0) {
$result = $conn->prepare($query);
$result->execute(array('id'=>$id,'dob_city'=>$dob_city,'dob_province'=>$dob_province,'dob_country'=>$dob_country));
$Msg = "<div style=\"text-align:center;\" class=\"alert alert-success\">
<strong>Tips! </strong>
Data is successfully saved to database.
<button class=\"close\" data-dismiss=\"alert\" type=\"button\">×</button>
</div>";
} else {
$Msg = "<div style=\"text-align:center;\" class=\"alert alert-error\">
<strong>Error! </strong>
This employee information is already existed in the system.
<button class=\"close\" data-dismiss=\"alert\" type=\"button\">×</button>
</div>";
}
} catch (Exception $e) {
$e->getMessage();
$Msg = $e; /* "<div style=\"text-align:center;\" class=\"alert alert-error\">
<strong>Error! </strong>
This employee information cannot save in the system.
<button class=\"close\" data-dismiss=\"alert\" type=\"button\">×</button>
</div>"; */
}
return $Msg;
}
Wenn ich ersetzen Sie die Werte von meiner insert-Methode (in UpdateTableHrForms mit der, der Fehler gibt mir und führen Sie es in mysql; es ist kein Fehler; aber in PHP ist es, dass Sie mir die Fehler; Könnten Sie mir bitte helfen wenn ich was falsch mache?)
- Ich empfehle, dass Sie lernen, über eine Datenbank-Normalisierung. Keine SQL-Anweisung sollte so groß sein. Keine SQL-Tabelle haben sollte, die viele Spalten.
- PS: ich weiß die Tabelle ist zu komisch und zu lang, und es muss normiert werden; aber aus irgendeinem Grund ist meine Datenbank und ich sollte die Arbeit mit dieser Tabelle!
- Es ist Ihnen zu sagen, dass die Anzahl der Spalten deklariert, entspricht nicht der Anzahl der Werte die in der INSERT-Anweisung. So dass Sie letztlich tun, entweder
INSERT INTO table (col1, col2, col3) values ('val1','val2')
oder man tutINSERT INTO table (col1, col2) values ('val1','val2','val3')
. Sie müssen gehen Sie durch den code, und stellen Sie sicher, dass Sie übergeben werden, die richtige Anzahl von Spalten und Werte - Danke, MonkeyZeus
Du musst angemeldet sein, um einen Kommentar abzugeben.
Das array, das Sie vorbei sind, um
execute
ist nicht formatiert hat ganz Recht; Sie müssen den Doppelpunkt am Anfang der parameter-name.Sollte es sein: