Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/sql/85.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Mysql Zend Select和NOT在数组中_Mysql_Sql_Zend Framework_Zend Db Table - Fatal编程技术网

Mysql Zend Select和NOT在数组中

Mysql Zend Select和NOT在数组中,mysql,sql,zend-framework,zend-db-table,Mysql,Sql,Zend Framework,Zend Db Table,我想按id选择不在其他表中的表条目。 用于以下代码: $table2 = new OfferTable(); $select = $table2->select()->from('offers', array('aId as id')) ->where('mem_id =?', $memId); $table = new otherTable(); $select2 = $table->select()->where('id NOT i

我想按id选择不在其他表中的表条目。 用于以下代码:

$table2 = new OfferTable();
$select = $table2->select()->from('offers', array('aId as id'))
              ->where('mem_id =?', $memId);

$table = new otherTable();
$select2 = $table->select()->where('id NOT in (?)', $select);
$result = $table->fetchAll($select);
这可以很好地工作,但是当OfferTable有很多条目并且第一次选择只选择几个条目时,速度非常慢

因此,我尝试了以下方法:

$table2 = new OfferTable();
$select = $table2->select()->from('offers', array('aId as id'))
              ->where('mem_id =?', $memId);
$fetch = $table2->fetchAll($select);
$id_array = array();
foreach($fetch as $value){
    $id_array[] = $value->id;
}

$table = new otherTable();
$select2 = $table->select()->where('city = ?', $city)
              ->where('id NOT in (?)', $id_array);
$result = $table->fetchAll($select);
这似乎工作得更快,但有时我会收到以下错误消息:

SQLSTATE[42000]:语法错误或访问冲突:1064您的SQL语法有错误;检查与您的MySQL服务器版本对应的手册,以获取第1行中使用的正确语法(near'))和(id NOT IN('3956','3821'))

我不明白为什么我会犯这个错误,尤其是为什么我没有一直都犯这个错误。
谢谢你的帮助

我想我解决了这个问题:

在原始代码中,我使用了两个->where('id NOT In(?),$id\u数组)语句。
当其中一个数组为空时发生错误。

我想我解决了这个问题:

在原始代码中,我使用了两个->where('id NOT In(?),$id\u数组)语句。
当其中一个数组为空时发生错误。

查看查询并尝试在phpmyadmin中运行它。查看查询并尝试在phpmyadmin中运行它。