4 Stimmen

Unbekannte Spalte 'valueToPass' in 'field list' MySQL Fehler # :1054

Ich habe eine gespeicherte Prozedur in Mysql zur Aktualisierung geschrieben. Das funktioniert gut, wenn Sie es in der Mysql-Befehlszeile (über Mysql-Editor) ausführen.

Gespeicherte Prozedur ist:

CREATE DEFINER=`root`@`localhost` PROCEDURE `Deduction_Of_PL`(
    IN P_EMPID VARCHAR(1000)
)
BEGIN
  DECLARE PresentYearPL VARCHAR(1000);

  set PresentYearPL=(select Present_Year_PL from leave_calculate_pl where employee_id=P_EMPID);

  IF(PresentYearPL<=0) THEN
    UPDATE leave_calculate_pl
    SET Carrie_PL=Carrie_PL-1
    where employee_id=P_EMPID;
  ELSE
    UPDATE leave_calculate_pl
    SET Present_Year_PL=Present_Year_PL-1
    where employee_id= P_EMPID;
  END IF;

END $$

Ich rufe dieselbe Stored Procedure in PHP auf und übergebe auch den Eingabeparameter.

$LeaveTypeID_G=$this->getLeaveTypeId();
$query_G="CALL Deduction_Of_PL($LeaveTypeID_G)";

Die Fehlermeldung lautet

Unknown column 'parameter_value' in 'field list'  MySQL Error # :1054 

Bitte teilen Sie mir mit, was schief gelaufen ist und wie ich es beheben kann.

1voto

Mr Angry Punkte 184

Ich bin gerade mit dem gleichen Problem konfrontiert worden. Ich versuche, den Benutzernamen eines angemeldeten Benutzers an die gespeicherte Prozedur zu übergeben, um ihn in einem Protokoll aufzuzeichnen.

Die Stored Procedure läuft gut, wenn ich sie direkt aufrufe (von MySQL Workbench aus), und sie funktionierte auch gut von PHP aus, wenn ich nur ein Datum/eine Uhrzeit übergeben habe. Jetzt, wo ich den Benutzernamen als String übergebe, funktioniert sie jedoch nicht mehr.

Für mich bestand die Lösung darin, alle String-Parameter in einfache Anführungszeichen einzuschließen, etwa so:
$query = "CALL $procedure_name ( $date_parameter, '$string_parameter')";

Ich hoffe, das hilft allen, die über dieses Problem stolpern.

0voto

Kit Ramos Punkte 1301

Nun, ich bin kein Experte für Sql, und ich sehe nicht viel php-Code gepostet, aber "Unbekannte Spalte" zu mir würde sich auf die Spaltennamen in der Sql-Tabelle in Frage, oder genauer gesagt, dass es die Spalte nicht finden kann, die Sie ihm gesagt, um in dieser Tabelle zu erhalten. erster Ort, den ich betrachten würde, ist die Select-Anweisung, die Sie bitten, es von der Spalte zu ziehen " Present_Year_PL " Ich habe festgestellt, dass die Groß- und Kleinschreibung eine Rolle spielt, also stellen Sie sicher, dass es genau mit dem Spaltennamen in der Tabelle übereinstimmt. Der nächste Ort, an dem ich suchen würde, ist in der where-Anweisung, die Sie mit der Spalte abgleichen sollen. employee_id "Obwohl dies technisch gesehen legal ist (da Sie in der aktuellen Tabelle eine Spalte in Großbuchstaben und eine in Kleinbuchstaben haben könnten), werden normalerweise alle Spaltennamen in einer Tabelle in Großbuchstaben geschrieben, und umgekehrt. Dies würde dazu führen, dass ein Problem, das Sie haben, wenn sagen, die "Mitarbeiter-ID" Spalte auf der Tabelle ist "EMPLOYEE_ID" als dann "employee_id" actualy nicht in der Tabelle vorhanden ist. auch sicher sein, dass Ihre dooing nicht etwas wie "employeeid" oder "employee-id" oder sogar "Mitarbeiter-ID", wie die sind sehr leicht zu verwechseln, wenn Augeballing den Feldnamen, sondern wird Ihnen den Fehler Ihre immer.

0voto

ErichBSchulz Punkte 13834

Ein paar Hinweise:

  • Wie hoch ist der Wert der php-Variable $LeaveTypeID_G ? echo $LeaveTypeID_G; (php)
  • Zweitens: Ruft MySql einen Trigger auf? show triggers; (mysql)

CodeJaeger.com

CodeJaeger ist eine Gemeinschaft für Programmierer, die täglich Hilfe erhalten..
Wir haben viele Inhalte, und Sie können auch Ihre eigenen Fragen stellen oder die Fragen anderer Leute lösen.

Powered by:

X