Warning: file_get_contents(/data/phpspider/zhask/data//catemap/0/jpa/2.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
Zend framework2 如何使用ZEND 2中的同一适配器在同一函数中执行多个查询?_Zend Framework2_Execute - Fatal编程技术网

Zend framework2 如何使用ZEND 2中的同一适配器在同一函数中执行多个查询?

Zend framework2 如何使用ZEND 2中的同一适配器在同一函数中执行多个查询?,zend-framework2,execute,Zend Framework2,Execute,这是global.php文件的内容: return array( 'db' => array( 'driver' => 'Mysqli', 'database' => 'web_builder', 'username' => 'root', 'password' => '' ), 'service_manager' => array( 'factories'

这是global.php文件的内容:

return array(
    'db' => array(
        'driver' => 'Mysqli',
        'database' => 'web_builder',
        'username' => 'root',
        'password' => ''
    ),
    'service_manager' => array(
        'factories' => array(
            'Zend\Db\Adapter\Adapter'
                    => 'Zend\Db\Adapter\AdapterServiceFactory',
        ),
    ),
 );
这是我的模型的内容:

namespace Application\Model;

use Zend\Db\Adapter\Adapter;
use Zend\Db\TableGateway\AbstractTableGateway;

class UsersTable extends AbstractTableGateway {

    public function __construct(Adapter $adapter) {
        $this->adapter = $adapter;
    }
public function user_login($getData,$session_id){ // manage the user's login 

        $email = $getData['login_email'];
        $password  = $getData['login_password'];
        $select = $this->adapter->query ("select count(*) as counter from users where email = '$email' and  password = '".md5($password)."'");
        $results = $select->execute();
        if ($results->current()['counter'] == 1 ){
            $select->getDataSource()->getResource()->closeCursor();
            $update_user = $this->adapter->query("UPDATE users SET session_id = '".$session_id."' WHERE email = '".$email."'");
            $update_session = $update_user->execute();
            return 1; 
        }else{
            return 0;
        }
    }
}

由于某些原因,更新查询不起作用。如果我对count查询进行了注释,它就会工作。我发现我不能在同一个函数中执行多个查询,原因是:P。我收到了这样一条消息:
语句不能用sql生成:…
。如果我在phpmyadmin中执行它们,这两个查询都可以完美地工作。有人能解释一下为什么这不起作用吗?我有点绝望:|,我花了几个小时在这个问题上

这可能是一个格式/准备问题,看看它建议以下格式来准备您的声明:

$adapter->query('SELECT * FROM `artist` WHERE `id` = ?', array(5));
因此,在您的情况下,请尝试将其格式化为:

$select = $this->adapter->query ('select count(*) as counter from users where email = ? and  password = ? ', $email , md5($password) );

现在我得到了以下消息:可捕获的致命错误:传递给Zend\Db\Adapter\Adapter::query()的参数3必须实现接口Zend\Db\ResultSet\resultstenterface,字符串给定,在第63行的C:\xampp\htdocs\zf2\module\Application\src\Application\Model\UsersTable.php中调用,并在第166行的C:\xampp\htdocs\zf2\vendor\zendframework\zendframework\library\Zend\Db\Adapter\Adapter.php中定义,这可能是原因吗?email='$email'->email='.“$email.”