2016-05-27 9 views
0

Ich bin nicht in der Lage die folgende Prozedur auszuführen, und mit Blick auf Fehler:Fehler 1064: mehrere Strings in Concat Kombination() Funktion: MySQL

1064 Error Code: 1064. You have an error in your SQL syntax; check the manual that corresponds to your MariaDB server version for the right syntax to use near 'aid=ass333' at line 1

CREATE DEFINER=`root`@`localhost` PROCEDURE `ref_table`() 
BEGIN 

declare t_name varchar(20); 
declare aid1 varchar(20); 
declare get_email varchar(20); 

set @aid1 := 'ass333'; 
set @t_name := (select table_name from aid_ref where [email protected]); 

set @get_email= CONCAT("SELECT email FROM ",@t_Name,"where aid=",@aid1); 

Prepare stmt FROM @get_email; 

Execute stmt; 

End 

wenn ich die gleiche Prozedur bin Ausführung ohne ("wo Hilfe = ", @ aid1); in concat Funktion bekomme ich dann die Liste aller E-Mails in der Funktion, jedoch muss ich bestimmte E-Mail-ID von diesem Verfahren

set @get_email= CONCAT("SELECT email FROM ",@t_Name,"where aid=",@aid1); 

Antwort

0

Das Problem bekommen, ist wahrscheinlich diese Zeile:

set @get_email = CONCAT("SELECT email FROM ", @t_Name, "where @aid=", @aid1); 

Man vermutet, dass Sie fehlen Plätze:

set @get_email = CONCAT("SELECT email FROM ", @t_Name, " where @aid=", @aid1); 
--------------------------------------------------------^ 

Wenn die Werte von Benutzereingaben vorgesehen sind, dann sollten Sie parametrisierte Abfragen werden.

EDIT:

Vermutlich Ihr Problem um einen Wert ein Mangel an einfachen Anführungszeichen ist:

set @get_email = CONCAT("SELECT email FROM ", @t_Name, " where @aid = '", @aid1, "'"); 

Beachten Sie, dass Sie parametrisierte Abfragen verwenden sollten, wenn Sie Parameterwerte in die Query-String sind vorbei.

+0

Ich lief mit Ihrem Code "Fehlercode: 1054. Unbekannte Spalte 'ass333' in 'Where-Klausel'". Ich habe diesen Fehler auch viele Male zuvor gesehen. – Arun3x3