Добро пожаловать в форум, Guest  >>   Войти | Регистрация | Поиск | Правила | В избранное | Подписаться
Все форумы / PHP, Perl, Python Новый топик    Ответить
 Как получить значение из поля таблицы в PHP?  [new]
Stang
Member

Откуда:
Сообщений: 87
Есть простые запросы:
SELECT question FROM la_question WHERE id=1;

и
SELECT answer FROM la_answer WHERE id_question=1;

Первый запрос выводит только одну запись, второй некое множество, три-пять. Запрос я делаю через созданный класс, метод:
// запрос
	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;
		

	}

Все, в принципе работает, но мне нужно не это, и не пойму как. Например код:
$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. А по второму запросу я вообще хочу в кнопки запихнуть. Но я не могу разобраться с этими массивами.
На вот это у меня выдает ошибку:
echo $quest['question'];

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

Где читать, что я не так делаю? Мне нужно значение поля таблицы, мне не нужен весь массив с названием поля.
10 авг 18, 11:56    [21637505]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение из поля таблицы в PHP?  [new]
Изопропил
Member

Откуда:
Сообщений: 30767
Stang
Где читать

в документации.

mysqli_fetch_array
10 авг 18, 12:05    [21637528]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение из поля таблицы в PHP?  [new]
Stang
Member

Откуда:
Сообщений: 87
Изопропил
в документации.

mysqli_fetch_array

Та я уже перепробовал столько, что мне кажется я вообще не там ищу. В данном случае мне выдает нечто такое:
автор
Warning: mysqli_fetch_array() expects parameter 1 to be mysqli_result, array given in

Вот тупо с документации пример скопировал:
$row = mysqli_fetch_array($quest, MYSQLI_NUM);
		printf ("%s (%s)\n", $row[0]);
10 авг 18, 12:22    [21637564]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение из поля таблицы в PHP?  [new]
Stang
Member

Откуда:
Сообщений: 87
И что как по мне странно, вроде как у меня не обычный массив, а объект, и если я пытаюсь сделать вот так:
$row = $quest->fetch_assoc();
		echo "Выведем? ".$row['question'];

То выдает вот такого плана ошибку:
автор
Fatal error: Call to a member function fetch_assoc() on a non-object in
10 авг 18, 12:51    [21637629]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение из поля таблицы в PHP?  [new]
waszkiewicz
Member

Откуда:
Сообщений: 888
я так делаю
 ///
    /// 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());
        }

    }
10 авг 18, 12:57    [21637640]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение из поля таблицы в PHP?  [new]
Stang
Member

Откуда:
Сообщений: 87
waszkiewicz, это как-то сложно для меня еще воспринимать. А часом нет рабочего варианта, например на GitHub посмотреть? Чтобы я мог проследить всю цепочку? Воровать не буду, копипастить тоже, мне бы смыл понять...
10 авг 18, 13:06    [21637666]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение из поля таблицы в PHP?  [new]
waszkiewicz
Member

Откуда:
Сообщений: 888
Stang,
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());
        }
    }

использование
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 нет, не выкладываю
10 авг 18, 13:33    [21637754]     Ответить | Цитировать Сообщить модератору
 Re: Как получить значение из поля таблицы в PHP?  [new]
waszkiewicz
Member

Откуда:
Сообщений: 888
 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>");
10 авг 18, 13:41    [21637784]     Ответить | Цитировать Сообщить модератору
Все форумы / PHP, Perl, Python Ответить