Questions and discussion about developing processes and programming in PHP, JavaScript, web services & REST API.
Forum rules: Please search to see if a question has already asked before creating a new topic. Please don't post the same question in multiple forums.
By Danhae
#787285
Hi,
everytime i use a Variable in an SQL Trigger i get the the Error 'syntax error, unexpected '' (T_STRING) in the debugger'.
If i set the value from my variables direct in the sql query i get the expected values back.

I tried all prefixes, set my variable field in the Dynaform to view/disabled and a lot of other stuff, but i cant figure it out.

Maybe some of you know this kind of problem? What am i doing wrong?

thank you.

Regards
By Danhae
#787346
Hi, i was a little bussy when i wrote that last Post.

So here is my Trigger Code:
Code: Select all
$db = '3958231365812191caf2307054234752';
$query = 'Select 
Convert([varchar](10),[KHKVKBelege].[USER_Geplant],104) As Auslieferung,
  [KHKPpsFaBelegeBedarfVerursacher].[MengeBasis] as Menge,
  [KHKVKBelege].[A0Matchcode] as Kunde
From [KHKPpsFaBelegeBedarfVerursacher]
  Inner Join [KHKVKBelegePositionen] On [KHKVKBelegePositionen].[Mandant] =
    [KHKPpsFaBelegeBedarfVerursacher].[Mandant] And
    [KHKVKBelegePositionen].[BelPosID] =
    [KHKPpsFaBelegeBedarfVerursacher].[VerursacherID]
  Inner Join [KHKVKBelege] On [KHKPpsFaBelegeBedarfVerursacher].[Mandant] =
    [KHKVKBelege].[Mandant] And [KHKVKBelegePositionen].[BelID] =
    [KHKVKBelege].[BelID]
Where   
  [KHKPpsFaBelegeBedarfVerursacher].[RueckmeldungID] = 0 and
  [KHKPpsFaBelegeBedarfVerursacher].[BelID] = "@=FAID"';
$result = executeQuery($query, $db);
if (is_array($result) and count($result) > 0)
    @=VerursacherGrid = $result;
Maybe i just made something wrong, but i dont get it. I hope someone can help me.

Thank you
User avatar
By ashkufaraz
#787348
You must set point before and after of your variable
Code: Select all
 ".@=FAID."'
Try this
Code: Select all
$db = '3958231365812191caf2307054234752';
$query = 'Select 
Convert([varchar](10),[KHKVKBelege].[USER_Geplant],104) As Auslieferung,
  [KHKPpsFaBelegeBedarfVerursacher].[MengeBasis] as Menge,
  [KHKVKBelege].[A0Matchcode] as Kunde
From [KHKPpsFaBelegeBedarfVerursacher]
  Inner Join [KHKVKBelegePositionen] On [KHKVKBelegePositionen].[Mandant] =
    [KHKPpsFaBelegeBedarfVerursacher].[Mandant] And
    [KHKVKBelegePositionen].[BelPosID] =
    [KHKPpsFaBelegeBedarfVerursacher].[VerursacherID]
  Inner Join [KHKVKBelege] On [KHKPpsFaBelegeBedarfVerursacher].[Mandant] =
    [KHKVKBelege].[Mandant] And [KHKVKBelegePositionen].[BelID] =
    [KHKVKBelege].[BelID]
Where   
  [KHKPpsFaBelegeBedarfVerursacher].[RueckmeldungID] = 0 and
  [KHKPpsFaBelegeBedarfVerursacher].[BelID] = ".@=FAID."';
$result = executeQuery($query, $db);
if (is_array($result) and count($result) > 0)
    @=VerursacherGrid = $result;
User avatar
By amosbatto
#787354
What data type is @=FAID? If it's a string and it comes from input in a DynaForm field, then you should do this to protect against sql injection attacks:
Code: Select all
function ms_escape_string($data) {
        if ( !isset($data) or empty($data) ) return '';
        if ( is_numeric($data) ) return $data;

        $non_displayables = array(
            '/%0[0-8bcef]/',            // url encoded 00-08, 11, 12, 14, 15
            '/%1[0-9a-f]/',             // url encoded 16-31
            '/[\x00-\x08]/',            // 00-08
            '/\x0b/',                   // 11
            '/\x0c/',                   // 12
            '/[\x0e-\x1f]/'             // 14-31
        );
        foreach ( $non_displayables as $regex )
            $data = preg_replace( $regex, '', $data );
        $data = str_replace("'", "''", $data );
        return $data;
}

$db = '3958231365812191caf2307054234752';
$faid = ms_escape_string(@=FAID);
$query = "Select
  Convert([varchar](10),[KHKVKBelege].[USER_Geplant],104) As Auslieferung,
  [KHKPpsFaBelegeBedarfVerursacher].[MengeBasis] as Menge,
  [KHKVKBelege].[A0Matchcode] as Kunde
 From [KHKPpsFaBelegeBedarfVerursacher]
  Inner Join [KHKVKBelegePositionen] On 
  [KHKVKBelegePositionen].[Mandant] =[KHKPpsFaBelegeBedarfVerursacher].[Mandant] And
  [KHKVKBelegePositionen].[BelPosID] = [KHKPpsFaBelegeBedarfVerursacher].[VerursacherID]
  Inner Join [KHKVKBelege] On 
  [KHKPpsFaBelegeBedarfVerursacher].[Mandant] =[KHKVKBelege].[Mandant] And 
  [KHKVKBelegePositionen].[BelID] = [KHKVKBelege].[BelID]
 Where   
  [KHKPpsFaBelegeBedarfVerursacher].[RueckmeldungID] = 0 and
  [KHKPpsFaBelegeBedarfVerursacher].[BelID] = '$faid' ";
$result = executeQuery($query, $db);
if (is_array($result) and count($result) > 0)
    @=VerursacherGrid = $result;
User avatar
By amosbatto
#787355
By the way, MSSQL by default uses single quotation marks to denote strings and double quotes for identifiers (e.g. table names or column names). If you want to use double quotations marks to denote strings, you can change the MSSQL configuration with this command:
SET QUOTED_IDENTIFIER ON

🚨 Discover the power of Immediate ProAir X1 🚀 📈 W[…]

Mosquito Zapper Reviews

https://www.facebook.com/sammosquitozapper https:[…]

https://www.facebook.com/sammosquitozapper https:[…]

Are you looking for a simple method to import EML […]