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

时间:2015-01-04 18:09:26

标签: zend-framework2 execute

这是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;
        }
    }
}

由于某种原因,更新查询无效。如果我评论计数查询它的工作原理。我观察到,由于某些上帝知道的原因,我不能在同一个函数中执行多个查询:P。我收到此消息:Statement couldn't be produced with sql: ......。如果我在phpmyadmin中执行它们,那么两个查询都能正常工作。任何人都可以解释为什么这不起作用?我有点绝望:| ,我花了几个小时在这个

1 个答案:

答案 0 :(得分:0)

这可能是一个格式/准备问题,看一下manual它建议使用以下格式来准备你的陈述:

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