Запрос, не возвращающий правильные результаты в функции

#php #mysql #function

#php #mysql #функция

Вопрос:

Следующая функция настроена на:

  1. Соберите user_id из моей базы данных, как вы можете видеть ниже WHERE subscriber = '$user' . И затем:
  2. возвращает возможные множественные значения, которые user_id являются.

Однако, когда я попытался использовать эту функцию, она собрала только массив с ключом 0 и значением user_id . По очевидным причинам я хочу, чтобы массив содержал числовое значение, которое находится в user_id столбце в моей базе данных с ключом user_id .

 function get_subscribitions($user)
{
    $user = mysql_real_escape_string ($user);

    $sql = "SELECT 'user_id' FROM `subscribe` WHERE subscriber = '$user'";

    $result = mysql_query($sql);

    $rows = array();

    while ($row = mysql_fetch_assoc($result)) {
        $rows[] = $row;
    }

    mysql_free_result($result);

    return $rows;
}
  

Может кто-нибудь, пожалуйста, указать, где я допускаю ошибку, приводящую к этим связанным проблемам?

Любая помощь приветствуется, заранее благодарю!

Ответ №1:

Это должно быть:

  function get_subscribitions($user)
{

$user = mysql_real_escape_string ($user);

  $sql = "SELECT user_id FROM `subscribe` WHERE subscriber = '$user'";

 $result = mysql_query($sql);

  $rows = array();

  while ($row = mysql_fetch_assoc($result)) {
      $rows[] = $row['user_id'];
  }

  mysql_free_result($result);

  return $rows;
}
  

В запросе были ненужные кавычки, и вы неправильно читали массив $row

Комментарии:

1. Каким образом я неправильно прочитал массив $row? Я реализовал ваш код и получил неопределенный индекс, у вас есть какие-либо идеи, почему это произошло?

2. Если у вас есть, скажем, 2 результата — 5 и 11, используя, $rows[] = $row; вы закончили с $rows = array(0 => array('user_id' => 5), 1 => array('user_id' => 11)); . Используя мой код, с которым вы столкнулись $rows = array(0 => 5, 1 => 11) . Разве это не то, чего вы хотите?

3. Это именно то, что я хочу. Большое спасибо. Однако идентификатор пользователя стал неопределенным, когда я использовал ваш код, и я действительно не знаю, что с этим делать.

4. Пожалуйста. Что вы имеете в виду, стал неопределенным? Вы имеете в виду, что получаете предупреждение или что-то в этом роде? С кодом в моем ответе функция возвращает либо массив, подобный тому, который я описал в предыдущем комментарии, array(0 => 5, 1 => 11) либо он может возвращать пустой массив, если запрос не возвращает ни одной строки. Я предполагаю, что вы пытаетесь прочитать результат каким-то странным способом, но без дополнительного кода я могу только догадываться.

Ответ №2:

Попробуйте вместо

 $sql = "SELECT user_id FROM `subscribe` WHERE subscriber = '$user'";
  

Обратите внимание на отсутствие одинарных кавычек вокруг user_id