Php JQGrid中的动态生成查询

Php JQGrid中的动态生成查询,php,jquery,mysql,jqgrid,Php,Jquery,Mysql,Jqgrid,我想从表中动态查询数据,并根据登录的用户显示数据。我有两个文件:一个是index.php,它捕获用户的管理产品,如: $currentUser = CurrentUser::getInstance(); $UserID = $currentUser->getId(); //Get admin products $que1 = mysql_query("SELECT productid from admin_levels WHERE level>1 AND userid=$UserI

我想从表中动态查询数据,并根据登录的用户显示数据。我有两个文件:一个是index.php,它捕获用户的管理产品,如:

$currentUser = CurrentUser::getInstance();
$UserID = $currentUser->getId();

//Get admin products
$que1 = mysql_query("SELECT productid from admin_levels WHERE level>1 AND userid=$UserID ORDER BY productid");
$op1="";

while($row1 = mysql_fetch_row($que1)){
    foreach($row1 as $cell1){
        $op1.=$cell1.",";
    }
}

$temp1=strlen($op1)-1;
$op1=substr($op1,0,$temp1);
//op1 contains admin products for sql command
$_SESSION['w1']=$op1;
op1字符串包含类似以下内容:

16,17,20,114,125
现在,我想将其添加到jqgrid查询中:

//Get admin products
$y1=$_SESSION['w1'];
$opt1="WHERE issues.productid in (".$y1.")";

//Create query
$grid->SelectCommand = 'SELECT CONCAT(issues.type,"0",issues.kbid) as KBID,issues.issuesummary as Summary,products.productname as Product,issue_priorities.description as Priority,date_format(issues.createddate, "%d/%m/%Y") as Reported,date_format(issues.lastupdated, "%d/%m/%Y") as Updated,issue_status.statusdescription as Status,issue_resolutions.resdescription as Resolution,users.logon as Assigned FROM issues
    INNER JOIN issue_priorities ON issue_priorities.VALUE = issues.PRIORITY - 1 
    INNER JOIN issue_resolutions ON issue_resolutions.RESID = issues.RESOLUTION 
    INNER JOIN users ON users.ID = issues.ASSIGNEDUSERID
    INNER JOIN products ON products.PRODUCTID = issues.PRODUCTID
    INNER JOIN issue_status ON issue_status.STATUSID = issues.STATUS'
    .$opt1;
回显sql命令时,我得到以下结果:

SQLSTATE[42000]: Syntax error or access violation: 1064 You have an error in your SQL syntax; check the manual that corresponds to your MySQL server version for the right syntax to use near 'issues.productid in (16,17,20,114,125) LIMIT 0, 0' at line 6

如何解决此问题?

语法错误可能来自单引号尝试

 $grid->SelectCommand = "your query".$opt1;
而不是

$grid->SelectCommand = 'your query'.$opt1;

您可能只需要在
的WHERE
之前添加空格即可?当前代码可以生成类似于
…内部连接问题问题状态问题状态状态。STATUSID=问题。STATUSWHERE issues.productid在(16,17,20114125)LIMIT 0,0中,在提出问题时添加了空格,但实际上有空格。我不明白你的意思,我自己也不使用MySQL。我改用SQLServer。如果SQL Server出现同样的问题,我将使用SQL Server配置文件来获取对所有SQL语句的跟踪。然后,我将分析真正执行的SQL语句,并单独执行它。在理解问题并修复它之后,我将调整我的主代码,以便它生成固定的SQL语句和var,并用单引号括起来:$opt1=“WHERE issues.productid in(“$y1.””);