php mysqli oo multi_query над массивом - PullRequest
0 голосов
/ 24 октября 2011

У меня есть значение $ color_combo, которое взрывается в массив из $ colors для данного элемента (3 значения в массиве).Значения $ colors представляют собой 3-символьные строковые коды, т. Е. FGR, и в базе данных есть таблица соответствия, которая соответствует этому коду с цветом «зеленый лес» ... но с 3 цветами на элемент мне нужно выполнить запрос 3 разамассив:

 $color_combo = 'FGR-BLU-YLW'
 $colors = explode('-', $color_combo);
 $q = $mysqli -> prepare("SELECT color_name from color_table as c WHERE color_code=?");
 $q->bind_param("s", $colors[]);

Итак, я пытаюсь:

 while (mysqli_multi_query($link, $q)) {
 $result = mysqli_store_result($link))
 return $result;
 }

Я не смог найти документацию по этому сценарию, возможно, он использует другие функции...:

 $value = $result->fetch_array(); ... or maybe next_result() or more_result()

По сути, мой вопрос - больше о лучших практиках с расширением mysqli и о том, как выполнять запросы к массивам значений

1 Ответ

1 голос
/ 24 октября 2011

Вы должны изменить свой код с запросом на следующее:

$color_combo = 'FGR-BLU-YLW'
$colors = explode('-', $color_combo);
$q = $mysqli ->prepare("
    SELECT 
        color_name 
    FROM
        color_table as c 
    WHERE 
        color_code IN (?, ?, ?)
");

$q->bind_param("sss", $colors[0], $colors[1], $colors[2]);

После выполнения оператора результат теперь будет содержать 3 строки из базы данных, содержащие названия цветов. Вы можете зациклить этот результат, чтобы получить названия цветов. Код предполагает, что в массиве $ colors всегда будет 3 цветовых кода.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...