【问题标题】:How to Add php variable in laravel function如何在 laravel 函数中添加 php 变量
【发布时间】:2016-06-26 19:17:03
【问题描述】:
$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');

错误:语法错误,意外的“$username”(T_VARIABLE)

如何在这个查询中使用我的变量

【问题讨论】:

  • 首先应该是 '.$username.'检查连接
  • 在查询中使用 "" 而不是 ''。
  • 当stackoverflow代码语法高亮使问题变得非常清晰时总是很有趣!

标签: php sql laravel syntax-error laravel-5.2


【解决方案1】:

使用您的数据库查询,如以下字符串:

   $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");

请检查那里的查询中的双引号字符串和连接更改。

【讨论】:

  • SQLSTATE[42S22]:[Microsoft][ODBC Driver 11 for SQL Server][SQL Server]列名“Vasim”无效。 (SQL: 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 = Vasim AND LM.Status = 1 AND (IsNull(NullIf('',''),'1')='1' Or r.LocationId = '') AND 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)
  • @DeepKakkar:如果你通过连接方式编写查询,那么你应该写 UserName = '".$username."' 而不是当前的。
【解决方案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

希望对你有帮助:-)

【讨论】:

    猜你喜欢
    • 2021-02-20
    • 1970-01-01
    • 2020-05-26
    • 1970-01-01
    • 1970-01-01
    • 2018-10-23
    • 2022-07-27
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多