2016-03-11 3 views
3
$username='Vasim'; 

$results = DB::select(
    'Select r.LocationId ,LM.Name+'-'+LM.LocationCode as LocationName 
     from User_Master u(nolock), UserRoleLoc_link r(nolock) 
     left join Location_Master LM(nolock) 
     on r.LocationId = LM.LocationId 
     Where r.UserId = u.UserId 
     AND u.UserName = '$username' AND LM.Status = 1 AND 
     (IsNull(NullIf('',''),'1')='1' Or r.LocationId = '') 
     AND LM.isLocationOnline = 1 
     Group by r.UserId, u.UserName, 
      r.LocationId,u.Password,LM.Name,LM.LocationCode 
     having COUNT(r.UserId) > 0 
     Order By Count(r.UserId) DESC'); 

Ошибка: ошибка синтаксиса, неожиданный '$ имя пользователя' (T_VARIABLE)Как добавить переменную PHP в функции Laravel

, как я могу использовать переменную в запросе

+1

первого, что он должен быть ". $ Имени пользователя. check concatination – Deep

+0

Используйте «" вместо '' в вашем запросе. –

+0

Всегда весело, когда подсветка синтаксиса кода stackoverflow делает проблему понятной! – jszobody

ответ

2

Напишите свой запрос с помощью двухместной цитаты "" вместо одной цифры. ''.

$results = DB::select("SELECT r.LocationId ,LM.Name+'-'+LM.LocationCode as LocationName From User_Master u(nolock), UserRoleLoc_link r(nolock) 
    LEFT JOIN Location_Master LM(nolock) on r.LocationId = LM.LocationId 
    WHERE r.UserId = u.UserId AND u.UserName = '$username' 
    AND LM.Status = 1 AND (IsNull(NullIf('',''),'1')='1' Or r.LocationId = '') 
    AND LM.isLocationOnline = 1 GROUP BY r.UserId, u.UserName, r.LocationId,u.Password,LM.Name,LM.LocationCode HAVING COUNT(r.UserId) > 0 
    ORDER BY Count(r.UserId) DESC"); 

PHP выполняет переменную в двойных кавычках не в одной кавычки.

$username = 'vasim'; 
echo '$username'; // $username 
echo "$username"; // vasim 

Надеется, что это поможет :-)

+0

спасибо, что это правильный ответ –

+0

@SanjogMittal: Добро пожаловать :-) –

3

Используйте свой db, как следующая строка:

$username='Vasim'; 
    $results = DB::select("Select r.LocationId ,LM.Name+'-'+LM.LocationCode as LocationName from User_Master u(nolock), UserRoleLoc_link r(nolock) left join Location_Master LM(nolock) 
       on r.LocationId = LM.LocationId 
       Where r.UserId = u.UserId 
       AND u.UserName = '".$username."' AND LM.Status = 1 AND 
       (IsNull(NullIf('',''),'1')='1' Or r.LocationId = '') AND LM.isLocationOnline = 1 
       Group by r.UserId, u.UserName, r.LocationId,u.Password,LM.Name,LM.LocationCode 
       having COUNT(r.UserId) > 0 
       Order By Count(r.UserId) DESC"); 

Пожалуйста, проверьте двойную кавычку и изменение конкатенации в запрос там.

+0

почему downvote. Это не ответ? – Deep

+0

SQLSTATE [42S22]: [Microsoft] [драйвер ODBC 11 для SQL Server] [SQL Server] Недопустимое имя столбца «Vasim». (SQL: выберите r.LocationId, LM.Name + '-' + LM.LocationCode как LocationName из User_Master u (nolock), UserRoleLoc_link r (nolock) left join Location_Master LM (nolock) на r.LocationId = LM.LocationId Где r.UserId = u.UserId И u.UserName = Vasim AND LM.Status = 1 AND (IsNull (NullIf ('', ''), '1') = '1' Или r.LocationId = '') И LM.isLocationOnline = 1 Группа по r.UserId, u.UserName, r.LocationId, u.Password, LM.Name, LM.LocationCode с COUNT (r.UserId)> 0 Order By Count (r.UserId) DESC) –

+0

теперь эта ошибка произошла ... пожалуйста, разрешено –

Смежные вопросы