json_decode получает PDO fetchAll после того, как PDO извлек

0

PHP: У меня есть модель mvc:

public function addFriend($user)
    {    
            $sth = $this->db->prepare('SELECT user_id FROM users WHERE user_name = ? ');
            $sth->execute(array($user->friend)); 
        //Works but then everything else not work
            //return json_encode($sth->fetch());//NOT work  
           return json_encode($sth->fetchAll());

            $count =  $sth->rowCount();
        if ($count == 1) {

            // fetch one row (we only have one result)
            $result = $sth->fetchAll();//NOT WORK       
            //$result = $sth->fetch();//NOT WORK                    

$ifexist = $this->db->prepare("SELECT friend_id FROM friends WHERE user_id = ? AND friend_id = ?");
        $ifexist->execute(array($user->id, $result->user_id)); 

            $count2 =  $ifexist->rowCount();
        if ($count2 == 1) {
        //Friend already exist in friendslist
        return false;
        }else{

        $token = $this->getToken(50);
        $uid = $user->id;
        $fid = $result->user_id;

        $sth = $this->db->prepare('INSERT INTO friends 
                                     (user_id, friend_id, token) 
                              VALUES (:user_id, :friend_id, :token)');

        //we loop 2 times over the bindparams
        //1st time with above settings ($uid & $fid) and 1 time with settings beneath
        for($i = 1; $i <= 2; $i++ )  {
            $sth->bindParam(':user_id', $uid);
            $sth->bindParam(':friend_id', $fid);
            $sth->bindParam(':token', $token);
            $sth->execute();

       //token stay the same
       $token = $token;

       //switch clients id($uid) as friends id
       $uid = $result->user_id;

       //switch friends id ($fid) as clients id
       $fid = $user->id; 

    }

   }
  }

 }

jQuery: в mvc Просмотр я добавление данных из нижнего колонтитула с помощью jquery:

function addFriend() {

$('#indicator').show();
//var checkFriendsName = $('#friendsName').val();
//alert(checkFriendsName);
           var User = new Object();
           User.id = uiD;       
           User.friend = $('#friendsName').val();
       var userJson = JSON.stringify(User);

          $.post(BaseUrl+"chat/run", 
          {
              action: 'insert_friend',
              user: userJson
          },
          function(data, textStatus) {
                 renderaddFriend(data);
              $('#indicator').hide();
    },
             'json'
                )
 }

function renderaddFriend(jsonData) {
var checkInputName = $('#friendsName').val();
    if (jsonData.length == 0) {alert(checkInputName+' not found') }//not work

$.each( jsonData, function( index, user){     
alert(user.user_id);        
});

}

Как я могу передать json_encode в функцию jquery renderaddFriend?

  • 0
    Вы делаете ->fetch() а затем ->fetchAll() . Последний вернет пустой массив, если есть только одна строка результата.
  • 0
    Я попробую еще раз, я думаю, что уже пробовал это раньше, потому что я разделяю тот же факт. Но некоторое время назад это тоже не работало.
Показать ещё 6 комментариев
Теги:
pdo

1 ответ

1
Лучший ответ

Если у вас есть только одна строка результатов, то ->fetchAll() не будет ->fetchAll() никаких дополнительных записей.

Рассмотрите возможность перезаписи кода:

$results = $sth->fetchAll();

if (count($results) == 1) {
    $result = $results[0];
    // do stuff
}

return json_encode($results);
  • 0
    Я должен позволить этому приблизиться ко мне ......... ЭТО РАБОТАЛО.
  • 0
    @HenryW тогда ты должен принять ответ тогда
Показать ещё 1 комментарий

Ещё вопросы

Сообщество Overcoder
Наверх
Меню