Подсветка \ База данных \ QueryException (HY093) SQLSTATE [HY093]: неверный номер параметра - PullRequest
0 голосов
/ 10 мая 2019

Я пытаюсь выбрать user_id из всех сообщений, чей id является текущим индексом в цикле while, а чей vote равен 1, и преобразовать его в числовой массив.

Но он продолжает выдавать мне эту ошибку:

Illuminate \ Database \ QueryException (HY093)
SQLSTATE[HY093]: Invalid parameter number (SQL: select `user_id` from `laravellikecomment_likes` where (`item_id` = 1 and `vote` = ?))

Я не знаю, что теперь делать. Вот мой код (часть):

$db='laravellikecomment_likes';


  $allposts= DB::table($db)->where('vote','!=',0)->get()->pluck('user_id');
  $allposts = $allposts->toArray();

  $tn=count($allposts);
  $ai=0;
  $user=Auth::id();

  while ($ai <= $tn) {
     $recclist=array();
     $current=array_keys($allposts,$ai);
     $id=1;
     $wl=DB::table($db)->where(function ($query) use ($current, $id) {
        $query->where('item_id', '=', $current);
        $query->where('vote','=',$id);
    })->pluck('user_id');

1 Ответ

0 голосов
/ 10 мая 2019

Ошибка связана с вашим запросом

$wl=DB::table($db)->where(function ($query) use ($current, $id) {
    $query->where('item_id', '=', $current); # This line is the culprit
    $query->where('vote','=',$id);
})->pluck('user_id');

Выдается ошибка, SQLSTATE[HY093]: Invalid Parameter number намекает на неверный параметр. В этом случае вы пытаетесь использовать array, где Query Builder ожидает integer или string.

Если вы хотите использовать массив, используйте whereIn вместо where, например так:

$wl=DB::table($db)->where(function ($query) use ($current, $id) {
    $query->whereIn('item_id', $current); # Use whereIn to deal with arrays
    $query->where('vote', '=', $id);
})->pluck('user_id');
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...