2015-06-04 15 views
6

Proszę, powiedz mi, co zrobiłem źle? A jak lepiej pracować z bazą? Połączenie działa, ale nie widzę informacji z bazy. Dostaję:PHP OOP i połączenie MySQLi = Błąd krytyczny: wywołanie niezdefiniowanej metody mysqli :: arrayQuery()

Fatal error: Call to undefined method mysqli::arrayQuery()

Nie mogę zrozumieć, jak to naprawić, Google też nie pomogło.

<?php 
class Proc{ 
    protected $DB; 
    function __construct(){ 
     $this->DB=new mysqli('localhost', 'user', 'password', 'basename'); 
     $this->DB->query("set names utf8");} 
    function __destruct(){unset($this->DB);} 
    function GetAll(){ 
     $sql="SELECT * FROM users"; 
     $result = $this->DB->arrayQuery($sql, SQLITE_ASSOC); 
     return $result;} 
} 

$Yo = new Proc(); 

$users = $Yo->GetAll(); 
echo "All users: ".count($users); 
foreach ($users as $user){ 
    $id = $user["ID"]; 
    $n = $user["Name"]; 
    echo "{$id} - {$n}<br/>";} 
?> 

Mała poprawka i wszystko działa idealnie! Dziękuje za wszystko!

<?php 
class Proc{ 
    protected $DB; 
    function __construct(){ 
     $this->DB=new PDO("mysql:host=localhost;dbname=basename", user, password); 
     $this->DB->query("set names utf8");} 
    function __destruct(){unset($this->DB);} 
    function GetAll(){ 
     $sql="SELECT * FROM users"; 
     $result = $this->DB->query($sql); 
     return $result;} 
} 
$Yo = new Proc(); 
$users = $Yo->GetAll(); 
foreach ($users as $user){ 
    $id = $user["ID"]; 
    $n = $user["Name"]; 
    echo "{$id} - {$n}<br/>";} 
?> 
+0

Zaproszenie do metody niezdefiniowanej mysqli :: arrayQuery() - to znaczy komunikat o błędzie jest CEAR, prawda? – panther

+0

Czy umieścisz tę funkcję 'arrayQuery', jeśli ją masz –

+0

Sprawdzanie http://php.net/manual/en/book.mysqli.php wykaże, że' arrayQuery' nie jest dostępny (klasa mysqli nie ma takiej metody). Również lepiej jest zmienić na PDO –

Odpowiedz

1

Jaką bazę danych używasz? SQLite lub mysql?

Bo jak na PHP DOCS Chyba funkcję arrayQuery mogą być wykorzystywane wyłącznie do bazy danych SQLite

+0

MySQL 5.5.37 i połącz jako "mysqli". Więc to nie jest SQLite? – Baaakaaa

+1

Nie ... to jest baza danych mysql, którą masz, a ponieważ zainicjowałeś "mysqli", klasa mysqli nie ma tej metody – Abhinav

Powiązane problemy