У меня есть следующие строки:связывают отсчет пар первого аргумент
$formatsArray = $_POST['formats'];
$topicsArray = $_POST['topics'];
// Converting the array into individual strings
$formats = implode(",", $formatsArray);
$topics = implode(",", $topicsArray);
// Prepare the statement
$resources = $con->prepare("SELECT * FROM resources WHERE
(format IN (?))
AND (topic IN (?))");
// Bind the statement
$resources->bind_param('ss',$formats, $topics);
Проблема заключается в том, что темы, полученные из массива, в котором он может содержать несколько строки, но «s» будет распознавать только 1. Я хотел бы, что если в массиве topic имеется 10 записей, чем 10, а также для формата.
Я думаю о подсчете размера массива и добавлении s на каждой итерации, но не знаю, как это сделать. Любая помощь будет оценена по достоинству.
// Count array
$formatCount = count($formatsArray);
$topicCount = count($topicsArray);
не opssible. заполнители представляют значения ** SINGLE **. строка csv 'a, b, c', заполненная в заполнителе, не будет трех отдельных вещей для' in' для рассмотрения, это будет '... IN ('a, b, c')' - a одно значение. вы должны динамически строить строку запроса и вводить столько «?», как у вас есть значения, или использовать что-то еще полностью. –
Вы привязываете отдельные значения к каждому заполнителю '?' .... поэтому массив значений не будет связываться с одним заполнителем –
возможным дублированием [преобразования массива в отдельные строки] (http://stackoverflow.com/questions/32302633/convert-an-array-in-individual-strings) – chris85