PHP - mysqli query() returnerar tomt Object

Permalänk
Medlem

PHP - mysqli query() returnerar tomt Object

Tja!

Jag försöker hämta lite lite saker ur min mysql-databas. Dock lyckas jag bara få ut ett tomt object, trotts att det funkar perfekt på localhost och att queryn verkar stämma när jag kör den direkt i PHPmyAdmin.

$sql = "SELECT * FROM restaurants ORDER BY name ASC"; $results = $this->q($sql); print_r($results);

Någon som har någon ideé vad det kan vara? Google ger mig inte några svar!

Permalänk
Medlem
Visa signatur

Citera eller nämn gärna mig (@ToJa92) om du svarar på något jag skrivit.
Uppskattar du eller blir hjälpt av ett inlägg jag skrivit är jag tacksam om du gillar det.

Permalänk
Medlem

Jo det gör jag i en annan fil men när jag skriver ut objektet så är det tom. Det finns alltså inga rader i det trotts att när jag kör queryn direkt i databasen får jag ut två rader likadant när jag kör det på localhost.. Jag tycker det är mycket konstigt!

Permalänk
Medlem
Skrivet av RuCKk:

Jo det gör jag i en annan fil men när jag skriver ut objektet så är det tom. Det finns alltså inga rader i det trotts att när jag kör queryn direkt i databasen får jag ut två rader likadant när jag kör det på localhost.. Jag tycker det är mycket konstigt!

Men visa oss all kod då? Sitt inte och håll undan på den relevanta koden, vi är inte magiska och kan läsa tankar.

Visa signatur
Permalänk
Medlem
Skrivet av Drager:

Men visa oss all kod då?

Men det är ju just att Objektet kommer tillbaka tomt som är problemet men okej!

<?php function getNodes($table, $sorting = null, $condition = null) { if($sorting != null && $condition != null) { $sql = "SELECT * FROM $table WHERE $condition ORDER BY $sorting"; $results = $this->q($sql); } elseif ($condition != null) { $sql = "SELECT * FROM $table WHERE $condition"; $results = $this->q($sql); } elseif ($sorting != null) { $sql = "SELECT * FROM $table ORDER BY $sorting"; $results = $this->q($sql); } else { $sql = "SELECT * FROM $table"; $results = $this->q($sql); } return $results; } $restaurants = $db->getNodes("restaurants", "name ASC"); ?> foreach ($restaurants as $restaurant): ?> <tr><td><h3><?php echo $restaurant["name"]; ?></h3></td></tr>

Permalänk
Medlem
Skrivet av RuCKk:

Men det är ju just att Objektet kommer tillbaka tomt som är problemet men okej!

<?php function getNodes($table, $sorting = null, $condition = null) { if($sorting != null && $condition != null) { $sql = "SELECT * FROM $table WHERE $condition ORDER BY $sorting"; $results = $this->q($sql); } elseif ($condition != null) { $sql = "SELECT * FROM $table WHERE $condition"; $results = $this->q($sql); } elseif ($sorting != null) { $sql = "SELECT * FROM $table ORDER BY $sorting"; $results = $this->q($sql); } else { $sql = "SELECT * FROM $table"; $results = $this->q($sql); } return $results; } $restaurants = $db->getNodes("restaurants", "name ASC"); ?> foreach ($restaurants as $restaurant): ?> <tr><td><h3><?php echo $restaurant["name"]; ?></h3></td></tr>

Jag antar att $this är din databas-anslutning.
Lägg till detta i din funktion:

global $this;

Permalänk
Medlem

Mja getNodes ligger i den här klassen.

class db { private $db = null; function __construct() { $this->db = new mysqli("xxxxxxx.mysql.binero.se", "xxxxxx", "xxxxxxxx", "xxxxxxxx"); if(mysqli_connect_errno()) { echo "Connection failed: " . mysqli_connect_errno(); } }

Permalänk
Medlem

Du visar fortfarande inte din query funktion, "q".

Är allting tomt som returneras?

Om din getNodes inte funkar så ligger garanterat problemet i "q", kan inte se något uppenbart fel i din getNodes iallafall.

Visa signatur

PC: i7 3770k, Asus P8Z77-M PRO, 16GB @ 1600Mhz CL9, Gigabyte GTX670 OC, 120GB Intel 330
HTPC: i5 3450, ASRock Z77M mATX, 8GB @1600Mhz CL9, Gigabyte GTX670 OC, 160GB Intel 320
Server (Ubuntu 12.04): Pentium G2030 3Ghz, 4GB @ 1600Mhz, 160GB VelociRaptor, 4*1TB 7200RPM @ RaidZ

Permalänk
Medlem
Skrivet av Teere:

Du visar fortfarande inte din query funktion, "q".

Är allting tomt som returneras?

Om din getNodes inte funkar så ligger garanterat problemet i "q", kan inte se något uppenbart fel i din getNodes iallafall.

Aa på tre olia ställen kommer det tomma objekt tillbaka. q ser ut såhär:

function q($sql) { return $this->db->query($sql); }

Permalänk
Medlem

När jag skriver ut $sql så ser det bra ut och när jag kör den queryn direkt i phpmyadmin så får jag ut det jag vill ha..

Permalänk
Medlem

Nu använder inte jag mysqli och länge sen jag gjorde, men är det inte så att du behöver hämta ut resultsetet?

$result = $this->db->query($sql); $rows = array(); while($row = $result->fetch_array()) { $rows[] = $row; } return $rows;

Visa signatur

PC: i7 3770k, Asus P8Z77-M PRO, 16GB @ 1600Mhz CL9, Gigabyte GTX670 OC, 120GB Intel 330
HTPC: i5 3450, ASRock Z77M mATX, 8GB @1600Mhz CL9, Gigabyte GTX670 OC, 160GB Intel 320
Server (Ubuntu 12.04): Pentium G2030 3Ghz, 4GB @ 1600Mhz, 160GB VelociRaptor, 4*1TB 7200RPM @ RaidZ

Permalänk
Medlem
Skrivet av Teere:

men är det inte så att du behöver hämta ut resultsetet?

Jag är ganska ny på mysql och php men det funkar på localhost. Så jag tror foreach() gör det år dig men jag testade precis det du föreslog och det funkade!
Antar att jag bara får byta även om det är konstigt att det inte funkar från början.

Tack för hjälpen alla!

Permalänk
Medlem
Skrivet av RuCKk:

Jag är ganska ny på mysql och php men det funkar på localhost. Så jag tror foreach() gör det år dig men jag testade precis det du föreslog och det funkade!
Antar att jag bara får byta även om det är konstigt att det inte funkar från början.

Tack för hjälpen alla!

Den troligaste orsaken till det är att det är någon inställning som skiljer sig mellan din konfiguration och webhotellets konfiguration.