0

以下は私のクエリです:

$em = \Zend_Registry::get('em');
    $qb_1 = $em->createQueryBuilder();
    $q_1 = $qb_1->select('link_req')
    ->from('\Entities\link_requests','link_req')
    ->where( 'link_req.is_confirmed = 1' )
    ->andWhere('link_req.$link_requestsSenderUser='.$user1_id .'or'.' link_req.$link_requestsSenderUser='.$user2_id)
    ->andWhere('link_req.$link_requestsReceiverUser='.$user1_id .'or'.' link_req.$link_requestsReceiverUser='.$user2_id);
    $result= $q_1->getDql();
    echo $result;

そして、次のクエリが必要です:

SELECT * FROM [fb_local].[dbo].[link_requests]  
WHERE is_confirmed = 1 AND (request_user_id = 12  or request_user_id=19) AND (accept_user_id = 12 or  accept_user_id = 19)
4

1 に答える 1

0

SQL は 1 つのクエリにすぎないため、何をネストしようとしているのかわかりません。ただし、次のことを試してください。

$em = \Zend_Registry::get('em');
    $qb_1 = $em->createQueryBuilder();
    $q_1 = $qb_1->select('link_req')
        ->from('\Entities\link_requests','link_req')
        ->where( 'link_req.is_confirmed = 1' )
        ->andWhere('link_req.link_requestsSenderUser=:user_id or link_req.link_requestsSenderUser=:user_id')
        ->andWhere('link_req.link_requestsReceiverUser=:user_id or link_req.link_requestsReceiverUser=:user_id');
    $q_1->setParameter('user_id', $user1_id);
    $query = $q_1->getQuery();
    echo $query->getSql();

$の前の をどのように削除したかに注目してくださいlink_requestsReceiverUser。からパラメータも作成しました。$user1_idこれにより、SQL インジェクションが防止されます。

于 2014-01-30T07:03:56.780 に答える