#php #mysql #function
#php #mysql #функция
Вопрос:
Следующая функция настроена на:
- Соберите
user_id
из моей базы данных, как вы можете видеть нижеWHERE subscriber = '$user'
. И затем: - возвращает возможные множественные значения, которые
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