Задать вопрос
@anonim666

Как вывести конкретную строку из базы данных MySQL?

Доброго времени суток !
Я не давно начал изучать MySQL и PHP, поэтому в этих языках еще туплю.
Допустим есть БД с таблицей и такими строками: id, author, text_name
Например:

id auther text_name
1 Пупкин Новость 1
2 Федоров Новость 2
3 Сидоров Новость 3
4 Иванов Новость 4


На странице идет запрос к БД на вывод таблицы:

$db = mysql_connect ("сервер","название","пароль");
mysql_select_db ("название",$db);
mysql_set_charset (utf8);
$result = mysql_query ("SELECT author FROM full_text",$db);
$myrow = mysql_fetch_array ($result);


Для вывода на странице обычно используется код:

<? echo $myrow ['author']; ?>

Запрос идет на все строки из пункта author. Чтобы вывести конкретное имя нужно указывать либо конкретный id либо конкретное имя автора. И тут сам вопрос: можно ли сделать так, чтоб шел запрос на все имена из пункта author из таблицы, но чтоб каждое имя можно было-бы вывести на страницу в разных местах кода ? И если можно - то как ?
Заранее спасибо )
  • Вопрос задан
  • 22192 просмотра
Подписаться 3 Оценить Комментировать
Пригласить эксперта
Ответы на вопрос 3
In4in
@In4in
°•× JavaScript Developer ^_^ ו°
Используйте mysqli, а не mysql!

$db = new mysqli("сервер","название","пароль", "БД");
   $result = $db->query ("SELECT author FROM full_text", MYSQLI_USE_RESULT);
   while($row = $db->fetch_row()){
       //Что-то делаем с $row - каждой строкой из таблицы
   }
Ответ написан
Akdmeh
@Akdmeh
PHP, Yii2, Music
Ух, читайте далее учебники, у вас полное непонимание принципов получения данных.
Для того, чтобы все данные получить, нужно запустить mysql_fetch_array в цикле:
while(($row=mysql_fetch_array($result))!==false)
{
echo $row['author'];
}

Это выведет поочередно все имена. Если нужно потом в другом месте, можно сделать внутри цикла что-то типа:
$data_arr=array();
while(($row=mysql_fetch_array($result))!==false)
{
$data_arr[]=$row['author'];
}

И уже потом использовать данные с $data_arr.

Кроме того:
1) mysql_set_charset('utf8'); (это должна быть строка)
2) решите, поле называется author или auther
3) откажитесь от использования библиотеки mysql и переходите на PDO или хотя бы mysqli. Данная библиотека устаревшая, и уже в новых версиях php она не работает.
www.proft.com.ua/2008/11/28/primery-ispolzovaniya-pdo вот краткая статья о PDO, а так - просто погуглите.
Ответ написан
Комментировать
Вот это
$result = mysql_query ("SELECT author FROM full_text",$db);

и есть запрос на все имена из колонки "author";
Далее
$myrow = mysql_fetch_array ($result);
С каждым вызовом функции mysql_fetch_array() в $myrow помещается очередная строка из выборки, т.е. при первом вызове echo $myrow ['author'] выведет "Пупкин", затем запрашиваешь следующую строку из выборки
$myrow = mysql_fetch_array ($result);
Теперь при вызове echo $myrow ['author'] выведет следующее значение, т.е. "Федоров" и т.д.
Это я объяснил, как оно работает вообще.
Чтобы тебе иметь массив, $authors, например, чтобы получать из этого массива имена по порядку, как они идут в базе, то есть $authors[0] => "Пупкин", ... , $authors[3] => "Иванов", нужно сделать следующее:
$result = mysql_query ("SELECT author FROM full_text",$db);

$authors = array();

while ($row = mysql_fetch_array ($result))
{
  $authors[] = $row['author']
}


Теперь в массиве $authors все имена авторов из таблицы.
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы