PHP-ben hogyan tudom egy MYSQLi adatbázisból egy mező értékét kiírni?
1.: Csatlakozol az adatbázisra.
2.: SQL parancsot adsz a MySQLi beépített class-nak.
(Azaz: $obj->query('SQL PARANCS IDE');
3.: Majd visszakeresed. De van nekem egy jó kis osztályom amivel megtudod csinálni pillanatok alatt.
Tessék használd egészséggel. Mondom mi mire való.
1.: Megnyitod az osztályt:
$obj = new DBQuery($host, $user, $pass, $db); paraméterek megfelelőivel.
2.: SQL lekérdezést adsz hozzá. SQL esetén tömböt fog visszaadni.
$array = $obj->query(SQL LEKÉRDEZÉS IDE);
A kapott tömb 2D-s. Azaz [sor][oszlop]
Mivel az array 1. index-e '0' ezért az első sor index-e nulla. Mondjuk egy nevet akarsz kikeresni, aminek az oszlop neve MySQL-ben 'name', akkor ezt így tudod: $array[0]['name']
PHP 5.4-ben már lehet ezt is alkalmazni:
echo $obj->query(SQL LEKÉRDEZÉS IDE)[0]['name'];
Tessék az osztály. Kezdetleges, de működik. Azért nézd át te is hátha.
<?php
class DBQuery {
private $result;
private $link;
private $status;
public function __construct($host, $user, $pass, $db) {
try {
$this->connectTry($host, $user, $pass, $db);
}
catch(Exception $e) {
echo $e->getMessage();
exit;
}
}
/**
*
* @throws Exception
*/
private function connectTry($host, $user, $pass, $db) {
$this->link = new mysqli($host, $user, $pass, $db, 3306);
$this->link->set_charset("utf8");
if($this->link->connect_errno) {
$this->status = FALSE;
throw new Exception('Error code: '.$this->link->connect_errno.'; Error message: '.$this->link->connect_error);
} else {
$this->status = TRUE;
}
}
/**
*
* @return object
*/
private function getLink() {
if($this->status) {
return $this->link;
}
}
/**
*
* @param string $query SQL
* @return object MySQLi Stmt mode
*/
public function prepare($query) {
return $this->link->prepare($query);
}
/**
*
* @param string $query SQL
* @return array|integer
*/
public function query($query) {
if(!$this->status) return FALSE;
try {
if(preg_match('#^(SELECT|INSERT INTO|UPDATE|DELETE FROM)#', $query)) {
$this->result = $this->link->query($query);
}
return $this->queryResultRun($query);
}
catch(Exception $e) {
echo $e->getMessage().' ## SQL: '.$query;
exit;
}
}
/**
*
* @return array|integer
* @throws Exception
*/
private function queryResultRun($query) {
if(is_object($this->result) or $this->result == TRUE) {
if(preg_match('#^SELECT#', $query)) {
return $this->dataAcquisition();
}
return $this->link->affected_rows;
} else {
throw new Exception('SQL Error!');
}
}
/**
*
* @return array
*/
private function dataAcquisition() {
$i = 0;
$dataTable = array();
for($i = 0; $i < $this->result->num_rows; $i++) {
$row = $this->result->fetch_assoc();
foreach ($row as $key => $value) {
$dataTable[$i][$key] = $value;
}
}
return $dataTable;
}
/**
*
* @param string|array $notEncodedText
* @return string|array
*/
public function res($notEncodedText) {
if(is_array($notEncodedText)) {
$coded = array();
foreach ($notEncodedText as $key => $value) {
$coded[$key] = $this->link->real_escape_string(trim($value));
}
return $coded;
} else {
return $this->link->real_escape_string(trim($notEncodedText));
}
}
/**
*
* @return integer
*/
public function getNumRows() {
return $this->result->num_rows;
}
/**
*
* @return integer
*/
public function getAffectedRows() {
return $this->link->affected_rows;
}
}
?>
Kapcsolódó kérdések:
Minden jog fenntartva © 2024, www.gyakorikerdesek.hu
GYIK | Szabályzat | Jogi nyilatkozat | Adatvédelem | Cookie beállítások | WebMinute Kft. | Facebook | Kapcsolat: info(kukac)gyakorikerdesek.hu
Ha kifogással szeretne élni valamely tartalommal kapcsolatban, kérjük jelezze e-mailes elérhetőségünkön!