powered by simpleCommunicator - 2.0.51     © 2025 Programmizd 02
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как получить значение из поля таблицы в PHP?
13 сообщений из 13, страница 1 из 1
Как получить значение из поля таблицы в PHP?
    #39685982
Stang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Есть простые запросы:
Код: sql
1.
SELECT question FROM la_question WHERE id=1;


и
Код: sql
1.
SELECT answer FROM la_answer WHERE id_question=1;


Первый запрос выводит только одну запись, второй некое множество, три-пять. Запрос я делаю через созданный класс, метод:
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
// запрос
	public function query($sql) {
		// проверяем соединение
		if (!$this->connection) {
			return false;
		}
		// делаем запрос
		$result = $this->connection->query($sql);
		// проверяем на ошибки
		if (mysqli_error($this->connection)) {
			throw new Exception(mysqli_error($this->connection)); 
		}
		// если запрос не на получение данных, возвращаем его результат
		if (is_bool($result)) {
			return $result;
		}
		// получаем данные в массив
		$data = array();
		while ($row = $result->fetch_object()) {
			$data[] = $row;
		}
		// очищаем память и возвращаем результат
		
		mysqli_free_result($result);
		return $data;
		

	}


Все, в принципе работает, но мне нужно не это, и не пойму как. Например код:
Код: php
1.
2.
3.
4.
5.
$proba = new Database(HOST, USER, PASS, DB);
	$quest = $proba->query("SELECT question FROM la_question");
	echo "<pre>";
	var_export($quest);
	echo "</pre>";


Дает такой ответ:
авторarray (
0 =>
stdClass::__set_state(array(
'question' => 'Добрый день! Делаем звонок?',
)),
)

Я понимаю, можно и print_r использовать, или еще чего, но мне нужно не это, мне нужно 'question' вывести, например в блок <DIV> через echo. А по второму запросу я вообще хочу в кнопки запихнуть. Но я не могу разобраться с этими массивами.
На вот это у меня выдает ошибку:
Код: php
1.
echo $quest['question'];


Ошибка:
авторNotice: Undefined index: question in D:\xampp\htdocs\SalesPHP\proba.php on line ...
Где читать, что я не так делаю? Мне нужно значение поля таблицы, мне не нужен весь массив с названием поля.
...
Рейтинг: 0 / 0
Как получить значение из поля таблицы в PHP?
    #39685989
Фотография Изопропил
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StangГде читать
в документации.

mysqli_fetch_array
...
Рейтинг: 0 / 0
Как получить значение из поля таблицы в PHP?
    #39686002
Stang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Изопропилв документации.

mysqli_fetch_array
Та я уже перепробовал столько, что мне кажется я вообще не там ищу. В данном случае мне выдает нечто такое:
авторWarning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, array given in
Вот тупо с документации пример скопировал:
Код: php
1.
2.
$row = mysqli_fetch_array($quest, MYSQLI_NUM);
		printf ("%s (%s)\n", $row[0]);
...
Рейтинг: 0 / 0
Как получить значение из поля таблицы в PHP?
    #39686027
Stang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
И что как по мне странно, вроде как у меня не обычный массив, а объект, и если я пытаюсь сделать вот так:
Код: php
1.
2.
$row = $quest->fetch_assoc();
		echo "Выведем? ".$row['question'];


То выдает вот такого плана ошибку:
авторFatal error: Call to a member function fetch_assoc() on a non-object in
...
Рейтинг: 0 / 0
Как получить значение из поля таблицы в PHP?
    #39686032
waszkiewicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
я так делаю
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
 ///
    /// Returns associative array
    ///
    protected function execute() {
        try {
            $sth=$this->dbh->prepare($this->sth);
            $sth->execute($this->params);
            $this->params=array();
            return $sth->fetchAll(PDO::FETCH_ASSOC);
        }
        catch(PDOException $e) {
            die('Sorry, an error has occured during execute(). Contact your su. Error:'.$e.getMessage());
        }

    }
    ///
    /// Returns non-associative array
    ///
     protected function executeN() {
        try {
            $sth=$this->dbh->prepare($this->sth);
            $sth->execute($this->params);
            $this->params=array();
            return $sth->fetchAll(PDO::FETCH_NUM);
        }
        catch(PDOException $e) {
            die('Sorry, an error has occured during executeN(). Contact your su. Error:'.$e.getMessage());
        }

    }
...
Рейтинг: 0 / 0
Как получить значение из поля таблицы в PHP?
    #39686041
Stang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
waszkiewicz, это как-то сложно для меня еще воспринимать. А часом нет рабочего варианта, например на GitHub посмотреть? Чтобы я мог проследить всю цепочку? Воровать не буду, копипастить тоже, мне бы смыл понять...
...
Рейтинг: 0 / 0
Как получить значение из поля таблицы в PHP?
    #39686059
waszkiewicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Stang,
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
class DBCore {
    protected $dbh;
    protected $sth;
    protected $params;
    
   
    ///
    /// Constructor
    ///
    function __construct($path) {
        $config=parse_ini_file($path,TRUE);
        $server = 'localhost';
        $dbname=$config[someshit][someshit];
        $uname=$config[someshit][someshit];
        $pass=$config[someshit][someshit];
        
        try {
            $this->dbh=new PDO("mysql:host=$server;dbname=$dbname",$uname,$pass);
        }
        catch(PDOException $e)   {
            die("Sorry, an error has occured during connection. Contact your su. Error :".$e->getMessage());
        }
    }


использование
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
class DIA extends DBCore {



function __construct($path) {
    parent::__construct($path); 
    }
function getExContents($cat,$parentid) {
    $this->sth="select ne.id id
                ,ne.name name
                ,p.name cat
                ,p.id pid
                from nxExecs ne 
                join parameters p
                on p.id=ne.category
                where (ne.category=:cat or :cat is null)
                and parentid=:parentid
                order by name";
    $this->params=array("cat"=>$cat,"parentid"=>$parentid);
    return $this->execute();
}
}


на Git нет, не выкладываю
...
Рейтинг: 0 / 0
Как получить значение из поля таблицы в PHP?
    #39686062
waszkiewicz
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Код: php
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
 printf("<table class='dtable'>");
             foreach($dia->getExContents($_POST["cond"]==''?null:$_POST["cond"],$_POST["parent"]) as $row)
             {
                 printf("<tr data-id='%s' data-pid='%s'><td>%s %s</td><td>%s</td><td>%s</td></tr>"
                 ,$row["id"]
                 ,$row["pid"]
                 ,"<a href='#' class='nxexEdit' >Правка</a>"
                 ,"<a href='#' class='nxexDelete'>Удалить</a>"
                 ,$row["name"]
                 ,$row["cat"]);
             }
        printf("</table>");
...
Рейтинг: 0 / 0
Как получить значение из поля таблицы в PHP?
    #39690877
Stang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Я все же продолжу тему. Не знаю, что я не правильно делаю, но работая вне классов, все у меня получается выводить, в любом нужном мне виде. Если создаю свой класс, все пропало.

Наткнулся в одной книге на интересный метод __toString, но не совсем пойму как он работает. Сделал так:
Код: php
1.
2.
3.
public function __toString () {
	return $this->query;
}


У меня на выводе только предупреждение и слово массив -
Код: php
1.
2.
Notice: Array to string conversion in D:\xampp\htdocs\SalesPHP\index.php on line 43
Array


Или может мне нужно выводить переменную $data?
...
Рейтинг: 0 / 0
Как получить значение из поля таблицы в PHP?
    #39691118
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StangЕсли создаю свой класс, все пропало....гипс снимают, клиент уезжает. Отличное описание технической проблемы! Что пропало то?


StangНаткнулся в одной книге на интересный метод __toString, но не совсем пойму как он работает.В мануале http://php.net/manual/ru/language.oop5.magic.php#object.tostring описание вполне исчерпывающе одним абзацем.


StangУ меня на выводе только предупреждение и слово массив -
Код: php
1.
2.
Notice: Array to string conversion in D:\xampp\htdocs\SalesPHP\index.php on line 43
Array



Или может мне нужно выводить переменную $data?Опять же, сложно что-либо сказать, не видя проблемного кода.
...
Рейтинг: 0 / 0
Как получить значение из поля таблицы в PHP?
    #39691156
Stang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle...гипс снимают, клиент уезжает. Отличное описание технической проблемы! Что пропало то?
Так вроде выше описана проблема?
Если кратко, то вот такой код, просто на страничке, не через класс, работает:
Код: php
1.
2.
3.
4.
5.
6.
$results_q = $mysqli->query("SELECT question FROM la_question WHERE id=1");
		while($row = $results_q->fetch_assoc()) {
			
			echo sprintf($row["question"], $name);
			
		}


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

vkleВ мануале http://php.net/manual/ru/language.oop5.magic.php#object.tostring описание вполне исчерпывающе одним абзацем.
В принципе оттуда я и пытаюсь сделать свой код, но не получается.


vkleОпять же, сложно что-либо сказать, не видя проблемного кода.
Вот так я сделал метод:
Код: php
1.
2.
3.
public function __toString () {
	return $this->query;
}


Вот так я его вызываю:
Код: php
1.
2.
$dbRes = $db->query("SELECT * FROM la_answer");
echo "$dbRes";


В результате на выходе я получаю: Array
...
Рейтинг: 0 / 0
Как получить значение из поля таблицы в PHP?
    #39691200
vkle
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
StangВот так я сделал метод:
Код: php
1.
2.
3.
public function __toString () {
	return $this->query;
}



Вот так я его вызываю:
Код: php
1.
2.
$dbRes = $db->query("SELECT * FROM la_answer");
echo "$dbRes";



В результате на выходе я получаю: Array
Дык волшебный метод __toString() применим к экземпляру класса, в данном случае к объекту $db. Ваш же метод query() возвращает массив. В принципе, в ряде случаев элементы массива соединить в строку можно функцией implode(), если хотите, но толку от этого маловато, по большому счету, будет. Хотя, для какого-то простого случая вполне может сгодиться. Не для данного случая, разумеется. Вам этот вывод echo для чего нужен то?

По первому посту.
StangНа вот это у меня выдает ошибку:
Код: php
1.
echo $quest['question'];



Ошибка:
авторNotice: Undefined index: question in D:\xampp\htdocs\SalesPHP\proba.php on line ...

Где читать, что я не так делаю?Смотрите внимательно. Даже, очень внимательно. Ваш метод query() возвращает простой массив (с индексами 0, 1, 2 и т.д.), в который собраны все строки результата запроса. В данном конкретном случае будет возвращена единственная строка данных, которая попадет в массив с нулевым индексом. Это раз.
И два. Каждая строка данных представляет собой объект, который возвращается методом fetch_object().
Таким образом, если Вы желаете получить поле 'question' из первой строки результата запроса, то должны обращаться к нулевому элементу массива $data и только потом по имени поля к свойству объекта. Примерно так:
Код: php
1.
echo $quest[0]->question;



В общем, внимательно смотрите за типами данных, с которыми работаете. При непонятках используйте для анализа ситуации функцию var_dump().
...
Рейтинг: 0 / 0
Как получить значение из поля таблицы в PHP?
    #39691225
Stang
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
vkle, супер! Вот оно, чего я так не мог добиться! Даже в мозгах посветлело! Вот именно, что я и подозревал, что что-то с типами данных, как бы и php мне намекал... :)
Код: php
1.
2.
$proba = $db->query("SELECT question FROM la_question");
    echo $proba[0]->question;


И все работает!!!! Спасибо огромное. Получается __toString мне и не нужен? Мне нужна именно возможность выводить отдельно каждую ячейку, а не весь массив в одну строку.
...
Рейтинг: 0 / 0
13 сообщений из 13, страница 1 из 1
Форумы / PHP, Perl, Python [игнор отключен] [закрыт для гостей] / Как получить значение из поля таблицы в PHP?
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]