Помогите со скриптом вывода данных из базы данных

BrightGuy
На сайте с 03.10.2010
Offline
179
705

Здравствуйте, есть скрипт:

<?php

$mysqli = @new mysqli('localhost', 'oks', 'oks', 'oks');
if (mysqli_connect_errno()) {
echo "Подключение невозможно: ".mysqli_connect_error();
}
$result_set = $mysqli->query('SELECT `title_ru` FROM `_cities` WHERE `country_id` = 2');
while ($row = $result_set->fetch_assoc()) {
print_r($row);
echo "<br />";
}
$result_set->close();
$mysqli->close();
?>

Он выводит данные из базы, но выводит в таком виде:

Array ( [title_ru] => Байбузовка )

Array ( [title_ru] => Антоновка )

Array ( [title_ru] => Бабинцы ) ...

А нужны только название:

Байбузовка

Антоновка

Бабинцы ...

И можно ли сделать так что бы через адрес передавать переменную, что бы запрос менялся с

SELECT `title_ru` FROM `_cities` WHERE `country_id` = 2

на

SELECT `title_ru` FROM `_cities` WHERE `country_id` = 33

Например, sait.ru/city.php?33 так?

Заранее благодарен!

-= Сайты на заказ | Правки, обновление, работы по DLE =- (/ru/forum/791118) Skype: rus.shevchuk (skype:rus.shevchuk?chat) | Telegram: @ruslansh (tg://resolve?domain=ruslansh) | ICQ: 606535768 | info@ruslan-shevchuk.com
ДП
На сайте с 23.11.2009
Offline
203
#1

1 - Вместо print_r($row); пишите echo $row['title_ru'].PHP_EOL;

2 - Можно. Смотрите в сторону $_SERVER['QUERY_STRING'] и плейсхолдеров.

BrightGuy
На сайте с 03.10.2010
Offline
179
#2
Дикий пионер:
1 - Вместо print_r($row); пишите echo $row['title_ru'].PHP_EOL;
2 - Можно. Смотрите в сторону $_SERVER['QUERY_STRING'] и плейсхолдеров.

Спасибо, можете по второму пункту подробней написать?

ДП
На сайте с 23.11.2009
Offline
203
#3

По поподу получения параметров из строки запроса.

Тут два варианта - либо "традиционный" способ - передача параметров в виде

script.php?name=value

тогда у вас внутри скрипта value окажется в $_GET['name']

либо как вы написали script.php?33 - тогда вы не знаете имя параметра, но можете получить всю строку запроса в $_SERVER['QUERY_STRING'].

Для эксперимента сделайте тестовый скрипт который просто выводит $_SERVER['QUERY_STRING'] и повызывайте его с разными параметрами.

По поводу плейсходеров - вот с этой статьёй ознакомьтесь - http://php.net/manual/ru/mysqli.quickstart.prepared-statements.php и http://php.net/manual/ru/mysqli-stmt.prepare.php это обширная тема, и лучше сразу делать правильно через плейсхолдеры.

BrightGuy
На сайте с 03.10.2010
Offline
179
#4

С этим разобрался, реализовал следующим образом:

<?php

header("Content-Type: text/html; charset=utf-8");

$mysqli = @new mysqli('localhost', 'ruslansh_oks', 'ruslansh_oks', 'ruslansh_oks');

if (mysqli_connect_errno()) {
echo "Подключение невозможно: ".mysqli_connect_error();
}
$result_set = $mysqli->query('SELECT `title_en` FROM `_cities` WHERE `country_id` = ' . $_SERVER['QUERY_STRING'] . '');
while ($row = $result_set->fetch_assoc()) {
echo $row['title_en'].PHP_EOL;
echo "<br>";
}
$result_set->close();
$mysqli->close();
?>

Но иногда выводит примерно такое:

A?kan вместо Aşkan

В базе данных все хорошо, может тут нужно как-то принудительно указать кодировку? Все варианты что нагуглил не работаю, возможно что-то делаю не так.

Надеюсь на помощь сообщества, спасибо!

---------- Добавлено 20.12.2016 в 14:04 ----------

Еще бы запись в txt сюда добавить, было бы идеально. А название файла формировать из другой ячейки

---------- Добавлено 20.12.2016 в 14:51 ----------

С кодировкой разобрался, добавил:

$mysqli->query("SET NAMES UTF8");

$mysqli->set_charset("utf8");

Осталось записать все это в файл, но пока не могу придумать как

ДП
На сайте с 23.11.2009
Offline
203
#5


$data = "";
while ($row = $result_set->fetch_assoc()) {
$data.= $row['title_en'].PHP_EOL;
}
file_put_contents("file.txt",$data);

вместо file.txt можете подставить нудное имя файла, которые вы как-то выбираете из базы

S
На сайте с 30.09.2016
Offline
469
#6

Когда же наконец все запомнят, что такой код

WHERE `country_id` = ' . $_SERVER['QUERY_STRING']
- это дыра в безопасности. Остаётся только надеяться, что это Вы нас здесь типо дразните, а в рабочем коде всё будет нормалёк.
Отпилю лишнее, прикручу нужное, выправлю кривое. Вытравлю вредителей.
BrightGuy
На сайте с 03.10.2010
Offline
179
#7
Sitealert:
Когда же наконец все запомнят, что такой код
WHERE `country_id` = ' . $_SERVER['QUERY_STRING']
- это дыра в безопасности. Остаётся только надеяться, что это Вы нас здесь типо дразните, а в рабочем коде всё будет нормалёк.

Это код на один раз, он будет находиться локально до окончания работы.

---------- Добавлено 20.12.2016 в 15:29 ----------

Дикий пионер:

$data = "";
while ($row = $result_set->fetch_assoc()) {
$data.= $row['title_en'].PHP_EOL;
}
file_put_contents("file.txt",$data);

вместо file.txt можете подставить нудное имя файла, которые вы как-то выбираете из базы

Работает, спасибо. Можете еще подсказать как в название файла передать значение строки из таблицы?

S
На сайте с 30.09.2016
Offline
469
#8
BrightGuy:
как в название файла передать значение строки из таблицы?

Если значение строки, например, 'file', то

$name='file';

$filename=$name.'.txt';

Авторизуйтесь или зарегистрируйтесь, чтобы оставить комментарий